01_Prism介绍

Prism是一个框架,用于在WPF、Xamarin Forms 和 UNO/Win UI 应用程序中构建松耦合、可维护和可测试的XAML应用程序。
Prism提供了一组设计模式的实现,这些设计模式有助于编写良好且可维护的XAML应用程序,包括:

  • MVVM
  • dependecy injection
  • commands
  • EventAggregator

Prism能干嘛

通常客户端开发中会遇到很多的挑战:

  • 需求变化
  • 新的商业机会
  • 新技术

因此构建一个灵活的、易修改、易扩展的应用程序至关重要。这需要一个架构,允许应用程序的各个部分是独立开发和测试,可以修改或更新后,不影响应用程序的其余部分,相当于是隔离的单独部分。

Prism适合用来创建这种复合程序。比如多个后端系统创建多个终端软件:

Prism也适合让不同团队维护的独立组件在UI集成显示,下图中每个高亮框中的UI都是一个单独的组件

一个典型的Prism程序结构

官方地址

github : https://github.com/PrismLibrary/Prism

文档地址 : https://prismlibrary.com/docs/index.html

创建一个Prism应用程序

安装 VS 扩展包 - Prism Template Pack

  1. 点击 扩展 -> 管理扩展(M)
  2. 在弹出框中输入 prism
  3. 安装 Prism Template Pack

创建新项目

<!--App.xaml-->
<prism:PrismApplication x:Class="HelloProgram.Shell.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:local="clr-namespace:HelloProgram.Shell"
             xmlns:prism="http://prismlibrary.com/" >
    <Application.Resources>
         
    </Application.Resources>
</prism:PrismApplication>
    /// <summary>
    /// Interaction logic for App.xaml
    /// </summary>
    public partial class App
    {
        // 创建主窗体
        protected override Window CreateShell()
        {
            return Container.Resolve<MainWindow>();
        }
        // 向容器中注册对象
        protected override void RegisterTypes(IContainerRegistry containerRegistry)
        {
            containerRegistry.RegisterSingleton<IMessageService, MessageService>();
        }
        // ModuleCatalog
        protected override void ConfigureModuleCatalog(IModuleCatalog moduleCatalog)
        {
            moduleCatalog.AddModule<ModuleNameModule>();
        }
    }

PrismApplicationBase 抽象类中有几个重要的属性和方法:

  • Container - Unity容器对象,可以用来创建对象
  • RegisterTypes() - 用来在容器中注册对象
  • CreateShell() - 用来创建主窗体

我的公众号 HelloPragram

posted @   RisingWaves  阅读(454)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示