Prism研究(for WPF & Silverlight)4.从Hello World开始(实战篇)

Prism研究(for WPF & Silverlight)4.从Hello World开始(实战篇),第1张

概述本篇将指导使用Prism框架创建一个WPF版本的Hello World程序。Silverlight版本的程序大同小异,不再敷述。       相关内容请参见文档P127-147,代码示例参加Quickstarts\ Hello World目录。       1.首先我们要准备Prism框架的6个dll,分别是: · Microsoft.Practices.Composite.dll · Micro 本篇将指导使用Prism框架创建一个WPF版本的Hello World程序。Silverlight版本的程序大同小异,不再敷述。

      相关内容请参见文档P127-147,代码示例参加Quickstarts\ Hello World目录。

      1.首先我们要准备Prism框架的6个dll,分别是:

· Microsoft.Practices.Composite.dll

· Microsoft.Practices.Composite.Presentation.dll

· Microsoft.Practices.Composite.UnityExtensions.dll

· Microsoft.Practices.ObjectBuilder2.dll

· Microsoft.Practices.ServiceLocation.dll

· Microsoft.Practices.Unity.dll

      你可以从liB目录中直接找到这些dll,也可以编译CAL目录中的项目,然后在bin\deBUG目录下找到它们。将它们复制到一个目录下,以便我们可以在多个项目中方便地进行使用。同时,大家会看到很多xml文件,它们的名称和这些dll是相同的——最好把它们也一起复制过去,这些xml文件是用来在Visual Studio中做智能感知(IntelliSence)的。

      2.创建Shell

      创建一个名为HelloWorld.Desktop 的WPF应用程序。添加对上述所有dll的引用。然后删除默认的Window1.xaml,新建一个Shell.xaml。

      3.添加Region

      在Shell.xaml中添加对Prism命名空间的引用,如下所示:

xmlns:cal="http://www.codeplex.com/CompositeWPF"

      这样我们就可以为Region添加Prism中的依赖属性了。

      删除GrID标签,替换以ItemsControl,并将其命名为MainRegion:

<ItemsControl name="MainRegion" cal:RegionManager.Regionname="MainRegion" />

      这里cal:RegionManager.Regionname是一个依赖属性,我们将它与ItemsControl控件相关联。

      修改后的Shell.xaml如下:

<Window x:Class="HelloWorld.Desktop.Shell"    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"    xmlns:cal="http://www.codeplex.com/CompositeWPF"    Title="Shell" Height="300" WIDth="300">    <ItemsControl name="MainRegion" cal:RegionManager.Regionname="MainRegion" /></Window>

      4.添加Bootstarpper

      在HelloWorld.Desktop项目中添加一个名为Bootstarpper的类,这里覆写了CreateShell方法,以创建一个Shell窗体对象并显示:

class bootstrapper : Unitybootstrapper{    protected overrIDe DependencyObject CreateShell()    {        Shell shell = new Shell();        shell.Show();        return shell;    }}

*注:这里要添加对一个命名空间的引用,才能使用Unitybootstrapper:

using Microsoft.Practices.Composite.UnityExtensions;

      5.修改App.xaml文件。

      在App.xaml文件里,删除Application标签中的:StartupUri="Window1.xaml"。在相应的后台文件App.xaml.cs中覆写OnStartup方法:

protected overrIDe voID OnStartup(StartupEventArgs e){    base.OnStartup(e);    bootstrapper bootstrapper = new bootstrapper();    bootstrapper.Run();}

      6. 创建一个名为HelloWorldModule的类库,添加对Prism类库的其中2个dll的引用:

· Microsoft.Practices.Composite.dll

· Microsoft.Practices.Composite.Presentation.dll

      删除自动生成的class1.cs文件。

      7.在HelloWorldModule类库中创建一个文件夹,取名为VIEws,在这个文件夹中创建一个HelloWorldVIEw.xaml,我们为这个xaml添加一个显示HelloWorld的TextBlock:

<UserControl x:Class="HelloWorldModule.VIEws.HelloWorldVIEw"    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"    >    <GrID>        <TextBlock Text="Hello World" Foreground="Green" HorizontalAlignment="Center" VerticalAlignment="Center" FontFamily="Calibri" FontSize="24" FontWeight="Bold"></TextBlock>    </GrID></UserControl>

      8. 在HelloWorldModule类库中添加一个名为HelloWorldModule的类,它派生自IModule接口,为此我们要实现它的Initialize方法:

public class HelloWorldModule : IModule{    private Readonly IRegionVIEwRegistry regionVIEwRegistry;    public HelloWorldModule(IRegionVIEwRegistry registry)    {        this.regionVIEwRegistry = registry;       }    public voID Initialize()    {        regionVIEwRegistry.RegisterVIEwWithRegion("MainRegion",typeof(VIEws.HelloWorldVIEw));    }}

      我们发现,在Initialize方法中,将前面第3步指定的MainRegion与文件夹VIEws中HelloWorldVIEw类(这是一个xaml)的相关联。

      同时,这里提及一句,我们使用了依赖注入(构造函数)的方式,来传递参数regionVIEwRegistry。

      9.返回到HelloWorld.Desktop应用程序中,添加对HelloWorldModule类库的引用。

      10.最后,返回到第4步创建的Bootstarpper中,我们还要覆写它的GetModuleCatalog方法,从而找到并加载所指定的模块:

protected overrIDe IModuleCatalog GetModuleCatalog(){    ModuleCatalog catalog = new ModuleCatalog()        .AddModule(typeof(HelloWorldModule.HelloWorldModule));    return catalog;}

 

*注:这里要添加对一个命名空间的引用,才能使用IModuleCatalog和ModuleCatalog:

using Microsoft.Practices.Composite.Modularity;
这个例子的代码位于QuickStart中的HelloWorld目录中。

补充:

      Prism是基于Silverlight 2.0版本的,但是由于它只是一个框架,所以对于当前的Silverlight 3 beta1版本也是适用的;而Prism中自带的几个Silverlight例子,则需要对sln文件进行转换才能打开,这里,我们只关心框架,而不care版本。

      关于Silverlight的Hello World版本,也位于QuickStart中的HelloWorld目录中

总结

以上是内存溢出为你收集整理的Prism研究(for WPF & Silverlight)4.从Hello World开始(实战篇)全部内容,希望文章能够帮你解决Prism研究(for WPF & Silverlight)4.从Hello World开始(实战篇)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1008317.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-22
下一篇2022-05-22

发表评论

登录后才能评论

评论列表(0条)

    保存