22WPF----Prism框架

1.关于Prism框架

     官网:Prism Library      文档可以参考

     源码地址:https://github.com/PrismLibrary/Prism

     版本8.1

     Prism框架10+历史、微软,最新版本使用

2、功能说明

    Prism提供了一组设计模式的实现,有助于编写结构良好的且可维护的XAML应用程序,包括MVVM、依赖注入、命令、事件聚合器

3Prism框架关键程序

      Prism.Core :实现MVVM的核心功能,属于一个与平台无关的项目【Prism.dll】

      Prism.Wpf:包含了DialogServiceRegionModuleNavigation,其他的一些WPF的功能 【Prism.Wpf.dll】

      Prism.UnityPrism.Unity.Wpf.dll Prism.DryIoc.Wpf.dll

4、获取Prism框架

      Prism.dll                     Prism.Core

      Prism.Wpf.dll              Prism.Wpf

      Prism.Unity.Wpf.dll     Prism.Unity

      Prism.DryIoc.Wpf.dll   Prism.DryIoc

注:引入Prism.Unity包含Prism.dll和Prism.Wpf.dll

5、基本数据绑定方式

继承BindableBase类

、数据处理

ErrorsContainer

使用 

效果

7、命令状态检查

7.1基本命令

7.2 状态检查命令

第一种:利用BtnCheckCommand.RaiseCanExecuteChanged();进行触发检查过程

 注:需要在属性中加入RaiseCanExecuteChanged()方法

第二种:利用ObservesProperty进行属性的观察,当属性变化的时候进行状态检查

注:可以同时观察多个属性

第三种:通过ObservesCanExecute进行一个属性值的观察,进行动态的状态处理

 7.3异步命令

        public ICommand BtnAsyncCommand { get => new DelegateCommand<object>(DoExecute); }
        private async void DoExecute(object args)
        {
            await Task.Delay(3000);
            Value = 300;
        }

7.4事件转命令

           <ComboBox SelectedIndex="0">
                <i:Interaction.Triggers>
                    <i:EventTrigger EventName="SelectionChanged">
                        <prism:InvokeCommandAction Command="{Binding BtnEventCommand}"
                                                   TriggerParameterPath="Handled"/>
                    </i:EventTrigger>
                </i:Interaction.Triggers>
                <ComboBoxItem Content="11111"/>
                <ComboBoxItem Content="22222"/>
                <ComboBoxItem Content="33333"/>
                <ComboBoxItem Content="44444"/>
                <ComboBoxItem Content="55555"/>
            </ComboBox>
        // 事件转命令
        public ICommand BtnEventCommand { get => new DelegateCommand<object>(DoEventExecute); }
        private void DoEventExecute(object args)
        {
            Value = 300;
        }

注意:要引入这个命令空间

        xmlns:i="http://schemas.microsoft.com/xaml/behaviors"
        xmlns:prism="http://prismlibrary.com/"

 8、Prism框架初始化

8.1 PrismBootstrapper

第一步:通过NuGet引入Prism.Unity

第二步:创建对象

    public class Bootstrapper : PrismBootstrapper
    {
        //返回一个主窗口
        protected override DependencyObject CreateShell()
        {
            //创建一个MainWindow的实例,进行窗口显示
            return Container.Resolve<MainWindow>();
        }
        //注册一些类型
        protected override void RegisterTypes(IContainerRegistry containerRegistry)
        {
           
        }
    }

第三步:注释掉默认的启动路径

<Application x:Class="WPFPrism框架初始化.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:local="clr-namespace:WPFPrism框架初始化"
             >
    <!--StartupUri="MainWindow.xaml"-->
    <Application.Resources>
         
    </Application.Resources>
</Application>

第四步:调用

    public partial class App : Application
    {
        public App()
        {
            new Bootstrapper().Run();
        }
    }

8.2 PrismApplication

第一步:

    注:加上 xmlns:prism="http://prismlibrary.com/" 

第二步:

 

 8.3 ViewModelLocator

帮助进行ViewViewModel的绑定

 

 

 注:

        - ViewModel与视图类型位于同一个程序集中

        - ViewModel位于.ViewModelsViewModel)子命名空间中

        - View位于.ViewsView)子命名空间中

        - ViewModel名称与视图名称对应,以“ViewModel结尾

9.ViewModelLocator匹配规则

9.1更改命名约定

WPFPrismViewModelLocaltor.Views.MainWindow

WPFPrismViewModelLocaltor.ViewModels.MainWindowViewModel

9.2解析匹配规则

本质上是将视图View的命名空间改成和Model一致

 9.3三不搭匹配

1、可能不在一个程序集    2、对象不在指定的目录    3、名称不匹配

10.IOC容器与依赖注入

 定义接口和接口实现类

 IoC容器的对象注册

 在ViewModel中拿到该接口对象

 11.事件聚合器

 

 

  同样在ViewModel中也能订阅事件

 订阅处理线程

 

 

 订阅事件过滤

12.Dialog子窗口处理

IDialogService-逻辑注入

IDialogAware-实现

IDialogWindow

第一步:新建用户控件

第二步:创建ViewModel,继承IDialogAware接口

第三步: 注册一个Dialog

 

 第四步:注入逻辑

13.自定义Dialog父窗口

第一步:创建父窗口,实现IDialogWindow接口

 第二步:注册窗口

 第三步:弹出窗口

 

 添加win2窗口

 

 ShowDialog()第二个参数

 

Dialog传参和回调的一个过程

 

14.Region基本定义

1ShellRegion

     Region的作用:确定功能区域;确保交互页面的内容更新

2Region的注册:

      - ContentControlRegionAdapter

      - ItemsControlRegionAdapter

      - SelectorRegionAdapter

      - TabControlRegionAdapter

      - 自定义Region

 3、Region与Navigation

      - 基本导航过程(3种方式)

      - 导航生命周期

      - 导航确认

      - 导航传参

      - 导航日志

 

15.自定义Region 

 

 

 ResizeMode=“NoResize”  去掉最下最大按钮

16.Region常用导航方式

 

 

 

 

17.导航参数 

 

 

 

  当从B导航到A时候,可以直接到达,当A导航到B时候,进入ViewModel的ConfirmNavigationRequest方法,从而控制是不是可以继续导航到B

参数传递

主视图

 

 18.导航日志

 19.复合命令

CompositeCommand

19.1单个视图中使用

 19.2多个视图中使用

创建接口

 实现接口

 注册全局复合命令

 在视图A、B中分别注册子命令

 

 在主视图中调用

 

20.模块化管理Moudule

添加WPF用户控件库

添加对应的Views

 添加Prism.Unity引用

添加一个继承IModule接口

 在主模块中注册子模块

第三种方式

 

 

 第四种使用配置文件

 

 在子模块中注册视图

 总结

按需加载子模块

 

 通过XML文件加载子模块

 

扫描当前运行子目录

 

窗口切换时 ,是否激活

 

  • 5
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: WPF Prism框架是一个面向对象的框架,用于开发模块化、可扩展的WPF应用程序,它基于MVVM设计模式和依赖注入技术。该框架的主要目的是能够轻松地实现可插拔的模块,公共的服务、组件和工具类的共享,同时也提供了灵活的路由、事件聚合、模块加载、导航和命令处理等机制。使用WPF Prism框架可以快速地开发出灵活的WPF应用程序,从而提高代码质量和开发效率,减少代码的维护难度。 WPF Prism框架具有以下的特点: 1. 扩展性:可以轻松地添加新的模块、服务和组件,同时也可以快速替换现有的组件。 2. 可重用性:提供了丰富的公共组件、服务和工具类,从而可以提高代码的可重用性。 3. 灵活性:提供了灵活的路由、事件聚合、模块加载和导航等机制,能够更好地满足应用程序的需求。 4. 易用性:提供了一套完整的MVVM设计模式和依赖注入技术的实践方案,从而能够更好地组织应用程序的逻辑。 总之,WPF Prism框架是一个强大的工具,能够让我们更好地开发WPF应用程序,提高代码质量和开发效率,实现可插拔的模块化和可扩展性,同时也具有灵活性和易用性。 ### 回答2: WPF Prism框架是一种面向MVVM模式的开源框架,它帮助开发人员使用模块化的方式构建可扩展、可重用和易于维护的WPF应用程序。该框架主要由Microsoft和模式仲裁者团队开发和维护,它借鉴了许多现代的软件开发理念,比如IoC容器、依赖注入和事件聚合器等。 WPF Prism框架的核心思想是将应用程序分解为许多可独立维护和扩展的模块。这些模块可以基于业务逻辑、UI、数据或任何其他特征进行分组。在该框架中,模块由各种名为“组件”的构建块组成。这些组件包括视图(View)、视图模型(ViewModel)、服务(Service)、模型(Model)等。通过基于这些组件的开发,可以实现具有高度可伸缩性和可重用性的应用程序。 为了实现这种模块化开发和组件化架构,WPF Prism框架提供了一些重要的工具和特性。例如,在该框架中可以使用依赖注入容器(如Unity)来管理组件及其依赖关系。此外,该框架还提供了一些基于事件的消息机制,可方便地实现模块间的交互和通信。 总体来说,WPF Prism框架是一种利用开源技术实现企业级应用程序开发的最佳选择。它具有良好的模块化、组件化和可扩展性特性,可以在实现复杂WPF应用程序时提高开发效率和代码质量。 ### 回答3: WPF Prism是一个基于WPF的框架,它为大型应用程序提供了一种组织、设计和部署的方式。它旨在帮助开发者构建可扩展、可维护和可测试的WPF应用程序。 WPF Prism采用了面向模块的编程思想,它将整个应用程序划分为多个模块,每个模块都包含自己的逻辑和用户界面。这种模块化设计使得应用程序易于扩展和维护,同时也简化了开发流程。 WPF Prism同时提供了一组强大的工具和功能,如依赖注入、命令模式和事件聚合等,这些功能让WPF应用程序更加易于开发和测试。它还提供了一个强大的导航和区域管理系统,开发者可以使用这些系统来管理不同部分的用户界面和功能。 总之,WPF Prism是一个优秀的框架,它为开发者提供了全面的工具和功能,使得构建WPF应用程序变得更加容易和高效。它的结构良好、可扩展性强,而且可以充分利用WPF的强大功能。无论是大型企业应用程序还是小型桌面应用程序,WPF Prism都是一个理想的选择。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值