Prism项目初始化与项目结构

Prism简介

Prism 框架适用于 WPF 和 Xamarin Forms 中构建松散耦合、可维护和可测试的应用程序。Prism 提供了一组设计模式的实现,这些设计模式有助于 编写结构良好且可维护的 xaml 应用程序,功能包括:

视图模型定位器(View Model Location)

MVVM(通知)

命令(Commands)

事件聚合器(EventAggregator)

模块化(Module)

依赖注入(Dependency Injection)

导航功能(Navigation)

对话服务(DialogService)

项目搭建

第一步 打开NuGet包管理器,添加Prism依赖包

第二步 搜索“Prism”

第三步 安装现“Prism.Core”和“Prism.Wpf”,IOC可选择“Prism.Unity”或“Prism.DryIoc”

第四步 改造WPF应用程序

非App启动

删除窗体运行

<Application x:Class="Zhaoxi.PrismViewModelLocator.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:local="clr-namespace:Zhaoxi.PrismViewModelLocator">
    <Application.Resources>
         
    </Application.Resources>
</Application>

创建一个类,并继承Prism.Unity提供的PrismBootstrapper类

    public class Startup : PrismBootstrapper
    {
        protected override DependencyObject CreateShell()
        {
            return new MainWindow() { Title = "Prism Start" };
        }

        protected override void RegisterTypes(IContainerRegistry containerRegistry)
        {
            
        }
    }

APP中使用Run方法启动

    public partial class App : Application
    {
        public App()
        {
            Startup sss = new Startup();
            sss.Run();
        }
    }

MainWindow初始化传递IOC参数

public partial class MainWindow : Window
    {
        public MainWindow(IEventAggregator eventAggregator)
        {
            InitializeComponent();
        }
    }

 当MainWindow初始化需要传递IEventAggregator时有两种方法

1.使用Container.Resolve<IEventAggregator>()取出参数后传入MainWindow

2.直接使用IOC提供的Resolve泛型调用窗口

    public partial class App: PrismApplication
    {
        protected override Window CreateShell()
        {
            //var ea = Container.Resolve<IEventAggregator>();
            //return new MainWindow(ea);

            return Container.Resolve<MainWindow>();
        }
        protected override void RegisterTypes(IContainerRegistry containerRegistry)
        {

        }
    }

生产力工具

官方文档:https://prismlibrary.com/docs/getting-started/productivity-tools.html
Prism 现在与 Visual Studio 和 Visual Studio for Mac 集成,为使用 Xamarin.Forms 创建 WPF、UWP 以及本机 iOS 和 Android 应用程序提供了高效的开发人员工作流。使用适用于所选 IDE 的代码段、项模板和项目模板快速启动 Prism 应用。
可用工具共有 3 种,分别是
Prism Template Pack
Prism Template Studio
Prism Extensibility Pack
Prism Template Pack
Prism Template Pack 包含用于生成 WPF 和使用棱镜的 Xamarin.Forms 应用程序的代码段、项模板和项目模板的集合。

Prism语法糖

propp - 属性,带有支持字段,依赖于 BindableBase

private string _fieldName;
public string PropertyName
{
get { return _fieldName; }
set { SetProperty(ref _fieldName, value); }
}

cmd - 使用 Execute 方法创建 DelegateCommand 属性

private DelegateCommand _fieldName;
public DelegateCommand CommandName =>
_fieldName ?? (_fieldName = new DelegateCommand(ExecuteCommandName));
void ExecuteCommandName()
{
}

cmdfull - 使用 Execute 和 CanExecute 方法创建 DelegateCommand 属性

private DelegateCommand _fieldName;
public DelegateCommand CommandName =>
_fieldName ?? (_fieldName = new DelegateCommand(ExecuteCommandName, CanExecuteCommandName));
void ExecuteCommandName()
{
}
bool CanExecuteCommandName()
{
return true;
}

cmdg - 创建泛型委托命令属性

private DelegateCommand<string> _fieldName;
public DelegateCommand<string> CommandName =>
_fieldName ?? (_fieldName = new DelegateCommand<string>(ExecuteCommandName));
void ExecuteCommandName(string parameter)
{
}

cmdgfull - 使用 Execute 和 CanExecute 方法创建泛型 DelegateCommand 属性

private DelegateCommand<string> _fieldName;
public DelegateCommand<string> CommandName =>
_fieldName ?? (_fieldName = new DelegateCommand<string>(ExecuteCommandName, CanExecuteCommandName));
void ExecuteCommandName(string parameter)
{
}
bool CanExecuteCommandName(string parameter)
{
return true;
}

Prism提供的WPF模板

**Prism Blank App :**这是一个项目模板,实质上是创建新的 WPF 外壳应用程序。它将有一个基本的引导程序,负责初始化应用程序并显示shell。它将有一个 MainWindow 和一个 MainWindowViewModel,分别位于 Views 和 ViewModels 文件夹中。
**Prism Module :**此项目模板将向解决方案中添加一个新项目,该项目将充当 Prism Module 。它将定义一个类,该类实现 IModule,其中包含两个用于视图和视图模型的空文件夹。

Cross Platform 

Prism ViewModel :从 BindableBase 派生并具有默认构造函数的视图模型。

WPF 

Prism UserControl :使用视图模型的用户控制
Prism Window :带视图的窗口模型

外部下载地址

https://marketplace.visualstudio.com/items?itemName=BrianLagunas.PrismTemplatePack 

在 Visual Studio 上的安装步骤

官方文档:https://www.prismsupport.com/documentation/Content/Topics-DocForm/Project_Wizard.htm

进入创建内,可以选择 Dryloc 和 Unity 两种模板,在这里选用 Dryloc 模板。

运行结果如下: 

posted @ 2023-09-03 11:31  ZHIZRL  阅读(458)  评论(0编辑  收藏  举报