本文共 2181 字,大约阅读时间需要 7 分钟。
PRISM项目地址:
先看下简介:
Prism is a framework for building loosely coupled, maintainable, and testable XAML applications in WPF, Windows 10 UWP, and Xamarin Forms.
谷歌翻译:
Prism是一个框架,用于在WPF,Windows 10 UWP和Xamarin Forms中构建松散耦合,可维护和可测试的XAML应用程序。
可以看出PRISM并不仅仅是一个MVVM框架,他提供了一系列设计模式的实现。这听上去就很Dior了。
PRISM 不再使用App.xaml
来为程序设置入口,而是使用 Bootstrapper来初始化程序和启动窗口。在 PRISM的项目中,需要删除App.xaml
中的StartupUri
,因为你不再需要使用他了。
通常情况下,你的App.xaml
是这样的:
而PRISM项目中的App.xaml
是这样的:
PRISM项目中,在 App.xaml.cs
中重写了OnStartup
方法,让app从Bootstrapper启动:
protected override void OnStartup(StartupEventArgs e) { base.OnStartup(e); var bootstrapper = new Bootstrapper(); bootstrapper.Run(); }
Bootstrapper.cs
,中的CreateShell
方法来创建shell,InitializeShell
初始化shell。这里的shell是宿主应用程序,就相当于是我们的主窗体程序,其他的view和module都将会被加载到shell中显示。下面是Bootstrapper.cs
类内容:
using Microsoft.Practices.Unity;using Prism.Unity;using BootstrapperShell.Views;using System.Windows;namespace BootstrapperShell{ class Bootstrapper : UnityBootstrapper { protected override DependencyObject CreateShell() { return Container.Resolve(); } protected override void InitializeShell() { Application.Current.MainWindow.Show(); } }}
当然你也可以不用使用MainWindow
,作为shell的窗口,可以改成任何你想要的名字,但他一定是Window类型,你还可以将他放在任何一个位置,为了将来适配MVVM思想,我们将他放在Views目录下面,以后我们所有的View都将放到这个目录下面。
那么,我们在初识WPF的时候,认识的App.g.cs
呢?他里面不是有Main方法吗?我们在同样的位置找到他:
using BootstrapperShell;using System.Windows.Shell;namespace BootstrapperShell { ////// App /// public partial class App : System.Windows.Application { ////// Application Entry Point. /// [System.STAThreadAttribute()] [System.Diagnostics.DebuggerNonUserCodeAttribute()] [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")] public static void Main() { BootstrapperShell.App app = new BootstrapperShell.App(); app.Run(); } }}
蛤蛤,他叛变了,App.g.cs
看上去更像是一个在编译的时候才会生成的中间文件,根据App.xaml.cs
中的OnStartup
方法来重新生成了Main方法。
转载地址:http://wusoa.baihongyu.com/