04.net6的wpf使用Prism的模块化步骤

使用Prism实现WPF应用程序的模块化可以按照以下步骤进行:

  1. 创建WPF应用程序项目,修改输出类型为输出类:
    在Visual Studio中创建一个新的WPF应用程序项目。选择使用.NET 6,并设置合适的项目名称和位置。

  2. 安装Prism NuGet包:
    打开NuGet包管理器控制台,运行以下命令来安装Prism相关的NuGet包:

    Install-Package Prism.Unity
    
  3. 创建核心文件夹结构:
    在项目中创建以下文件夹结构,用于组织模块化的代码:

    • Views:存放各个模块的视图。
    • ViewModels:存放各个模块的视图模型。
    • Services:存放各个模块的服务。
  4. 创建模块的页面和页面模型

<UserControl x:Class="WpfModuleA.Views.AaView"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             xmlns:local="clr-namespace:WpfModuleA"
             mc:Ignorable="d" 
             d:DesignHeight="450" d:DesignWidth="800">
    <Grid>
        <TextBlock Text="{Binding Title}"></TextBlock>

    </Grid>
</UserControl>

using Prism.Commands;
using Prism.Mvvm;
using Prism.Regions;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Input;

namespace WpfModuleA.ViewModels
{
    

    public class AaViewModel : BindableBase
    {

        #region 私有字段区


        #endregion

        #region 属性区
        private string _title = "AaViewModel";

        public string Title
        {
            get { return _title; }
            set
            {
                SetProperty(ref _title, value);
            }
        }    
        
        #endregion

        #region 命令区
        //public ICommand LoginCommand
        //{
        //    get => new DelegateCommand<Window>((window) =>
        //    {     
        //    });
        //}
        #endregion

        public AaViewModel(IRegionManager regionManager)
        {
            
           
        }

        private void LoadMenuItems()
        {
            
        }
    }
}

  1. 定义模块文件:
    创建一个新的类文件,表示一个模块。该类需要实现Prism的IModule接口,并重写OnInitialized方法。在这个方法中,你可以注册该模块的服务、视图和视图模型等。例如:
using Prism.Ioc;
using Prism.Modularity;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WpfModuleA.Views;

namespace WpfModuleA
{
    public class WpfModuleAProfile : IModule
    {
        public void OnInitialized(IContainerProvider containerProvider)
        {
            
        }

        public void RegisterTypes(IContainerRegistry containerRegistry)
        {
            //注册区域导航组件
            containerRegistry.RegisterForNavigation<AaView>();
            containerRegistry.RegisterForNavigation<AbView>();
        }
    }
}

  1. 配置模块依赖关系:
    打开App.xaml.cs文件,并在ConfigureModuleCatalog方法中添加以下代码,用于配置模块的依赖关系:
    //项目引用型添加prism模块
         protected override void ConfigureModuleCatalog(IModuleCatalog moduleCatalog)
         {
             moduleCatalog.AddModule<WpfModuleAProfile>();
             base.ConfigureModuleCatalog(moduleCatalog);
         }
    
         完全解耦添加prism模块
         //protected override IModuleCatalog CreateModuleCatalog()
         //{
         //    return new DirectoryModuleCatalog() { ModulePath=@"./Modules"};
         //}
    

通过按照上述步骤进行设置,你将能够在WPF应用程序中使用Prism实现模块化。每个模块都可以有自己的视图、视图模型和服务,它们可以通过容器和区域管理器进行注册和导航。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值