silverlight 学习笔记 (七):Prism的第一个应用

silverlight 学习笔记 (七):Prism的第一个应用,第1张

概述时隔很久,又回到了silverlight的学习中。前面对silverlight有了大致的了解,对采用MVVM模式开发有了大概的概念,简单总结下MVVM下的silverlight开发过程。 1、采用MVVM架构首先将View和ViewModel分离,使得设计者与开发者能够各司其职,在View中可以利用Binding实现对ViewModel的有关数据及事件的加载。但在实践中发现这个模式也会让我异常痛苦

时隔很久,又回到了silverlight的学习中。前面对silverlight有了大致的了解,对采用MVVM模式开发有了大概的概念,简单总结下MVVM下的silverlight开发过程。

1、采用MVVM架构首先将VIEw和viewmodel分离,使得设计者与开发者能够各司其职,在VIEw中可以利用Binding实现对viewmodel的有关数据及事件的加载。但在实践中发现这个模式也会让我异常痛苦,由于VIEw与viewmodel分离,在viewmodel中无法知道VIEw是什么,这就带来了viewmodel与VIEw通信的问题,虽然可以采用Messager实现双方的通信,但在VIEw中需要Coding。当然最痛苦的莫过于窗体的调用,至今都想不出有什么好的办法去实现,无意中在Prism发现了有ChilDWindow的调用方式,也让我决定学习Prism,毕竟Silverlight的开发框架主流是MVVM+PRISM+RIA Servic。

2、在MVVM+RIA的开发过程中,可以使用EF工具从数据库中生成领域模型,然后使用domianservice实现对模型的 *** 作,这极大减轻了我开发的工作量。但实际应用中又发现了问题,我在viewmodel中对Model的调用实际是调用的RIA生成的元数据模型,我并没有在此基础上重建Model,虽然节省了大量code,但由于使用底层的元数据模型,有很多数据验证是在元数据中进行标注的,而一旦需要更新元数据则需要重新标注元数据。所以现在也没法弄清楚是否需要在元数据基础上再增加一层Model层。

3、在MVVM模式中viewmodel需要处理应用逻辑,需要定义大量事件,所以viewmodel有时会显得异常复杂,如何能够简化?自然想到了组合模式,这也加强了对Prism的学习决心,虽然理解Prism将会是一个痛苦的过程。

先开始一个简单的Prism的过程:

1、创建Silverlight应用程序,项目添加Prism引用,将MainFrame改为Shell

 

[Export]     public partial class Shell : UserControl    {        public Shell()        {            InitializeComponent();        }    }

2、修改Shell.xaml,在Shell.xaml中添加Prism引用

xmlns:prism="clr-namespace:Microsoft.Practices.Prism.Regions;assembly=Microsoft.Practices.Prism"

添加Region

<ItemsControl name="Nav" prism:RegionManager.Regionname="Nav"></ItemsControl>

3、修改App.xaml.cs中项目启动方法

private voID Application_Startup(object sender,StartupEventArgs e)        {            //this.RootVisual = new Shell();            bootstrapper boot = new bootstrapper();            boot.Run();        }


4、添加bootstrapper 启动类,继承来自Mefbootstrapper,重载Mefbootstrapper的有关方法

protected overrIDe DependencyObject CreateShell()        {            return this.Container.GetExportedValue<Shell>();        }
protected overrIDe voID InitializeShell()        {            base.InitializeShell();            App.Current.RootVisual = (UIElement)this.Shell;        }

 

protected overrIDe voID ConfigureAggregateCatalog()        {            base.ConfigureAggregateCatalog();            this.AggregateCatalog.Catalogs.Add(new AssemblyCatalog(this.GetType().Assembly));        }

到此,一个最简单的Prism的应用完成

总结

以上是内存溢出为你收集整理的silverlight 学习笔记 (七):Prism的第一个应用全部内容,希望文章能够帮你解决silverlight 学习笔记 (七):Prism的第一个应用所遇到的程序开发问题。

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

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

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

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

发表评论

登录后才能评论

评论列表(0条)

    保存