3.初始化(第二种)-PrismApplication
初始化
Prism框架项目的初始化,可以使用两种启动器类型来进行,分别是PrismBootstrapper和PrismApplication。
PrismApplication
使用PrismApplication来进行项目启动,在步骤上会相对简单一些,具体如下:
修改App.xaml
将顶级元素Application修改为prism:PrismApplication。
去除启动属性StartupUri="MainWindow.xaml”。
<prism:PrismApplication x:Class="_2_PrismApplication启动.App" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="clr-namespace:_2_PrismApplication启动" xmlns:prism="http://prismlibrary.com/" > <prism:PrismApplication.Resources> </prism:PrismApplication.Resources> </prism:PrismApplication>
修改App后台代码
继承PrismApplication类并实现CreateShell和RegisterTypes两个方法,其用法跟上文中的PrismBootstrapper是一样的。
有一点需要注意,App类型在继承了PrismApplication类后可能会提示错误,但是没有提示要实现方法,此时重新生成一下代码就会由提示了。
注意:partial App类是分布类,有两个类的继承都要改
using DryIoc; using Prism.DryIoc; using Prism.Ioc; using System; using System.Collections.Generic; using System.Configuration; using System.Data; using System.Linq; using System.Threading.Tasks; using System.Windows; namespace _2_PrismApplication启动 { /// <summary> /// App.xaml 的交互逻辑 /// </summary> public partial class App : PrismApplication { protected override Window CreateShell() { //创建主窗口对象 return Container.Resolve<MainWindow>(); } protected override void RegisterTypes(IContainerRegistry containerRegistry) { //这里进行IOC容器管理类型的注册 } } }
#pragma checksum "..\..\App.xaml" "{8829d00f-11b8-4213-878b-770e8597ac16}" "65551451B2FB3CF182F244C22418094C7905251B86FF1F4AB84540A75AD8F23F" //------------------------------------------------------------------------------ // <auto-generated> // 此代码由工具生成。 // 运行时版本:4.0.30319.42000 // // 对此文件的更改可能会导致不正确的行为,并且如果 // 重新生成代码,这些更改将会丢失。 // </auto-generated> //------------------------------------------------------------------------------ using Prism.DryIoc; using Prism.Interactivity; using Prism.Ioc; using Prism.Mvvm; using Prism.Regions; using Prism.Regions.Behaviors; using Prism.Services.Dialogs; using System; using System.Diagnostics; using System.Windows; using System.Windows.Automation; using System.Windows.Controls; using System.Windows.Controls.Primitives; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Ink; using System.Windows.Input; using System.Windows.Markup; using System.Windows.Media; using System.Windows.Media.Animation; using System.Windows.Media.Effects; using System.Windows.Media.Imaging; using System.Windows.Media.Media3D; using System.Windows.Media.TextFormatting; using System.Windows.Navigation; using System.Windows.Shapes; using System.Windows.Shell; using _2_PrismApplication启动; namespace _2_PrismApplication启动 { /// <summary> /// App /// </summary> public partial class App : Prism.DryIoc.PrismApplication { /// <summary> /// Application Entry Point. /// </summary> [System.STAThreadAttribute()] [System.Diagnostics.DebuggerNonUserCodeAttribute()] [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")] public static void Main() { _2_PrismApplication启动.App app = new _2_PrismApplication启动.App(); app.Run(); } } }
此后的章节中,都以PrismApplication启动作为基础进行学习。

浙公网安备 33010602011771号