博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
从PRISM开始学WPF(二)Prism?
阅读量:6335 次
发布时间:2019-06-22

本文共 2181 字,大约阅读时间需要 7 分钟。

原文:

目录:

0x1 PRISM?

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了。

0x2 Run

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/

你可能感兴趣的文章
用maven+springMVC创建一个项目
查看>>
linux设备驱动第四篇:以oops信息定位代码行为例谈驱动调试方法
查看>>
redis知识点整理
查看>>
Hello World
查看>>
Spring3全注解配置
查看>>
ThreadLocal真会内存泄露?
查看>>
IntelliJ IDEA
查看>>
低版本mybatis不能用PageHeper插件的时候用这个分页
查看>>
javaweb使用自定义id,快速编码与生成ID
查看>>
[leetcode] Add Two Numbers
查看>>
elasticsearch suggest 的几种使用-completion 的基本 使用
查看>>
04-【MongoDB入门教程】mongo命令行
查看>>
字符串与整数之间的转换
查看>>
断点传输HTTP和URL协议
查看>>
redis 数据类型详解 以及 redis适用场景场合
查看>>
mysql服务器的主从配置
查看>>
巧用AJAX技术,通过updatePanel控件实现局部刷新
查看>>
20140420技术交流活动总结
查看>>
SaltStack配置salt-api
查看>>
各种情况下block的类型
查看>>