prism MVVM 框架模块化-自定义底部栏模块

需求:假设WPF 界面设计成经典web后台设计,分几大模块,各个模块独立,这时就需要模块化,prism框架有模块化的设计,解决了这个问题,整体实现方式比较简单。

prism MVVM 框架模块化-自定义底部栏模块_第1张图片

 

底部内容栏设计界面:

 

1、底部内容栏界面设计



    

    
        

            

    

2、ViewModel

using FooterModule.Views;
using Prism.Ioc;
using Prism.Modularity;
using Prism.Mvvm;
using Prism.Regions;
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace FooterModule.ViewModels
{
    public class FooterViewModel : BindableBase, IModule
    {

        private string runTime;
        public string RunTime { get => runTime; set { runTime = value; RaisePropertyChanged(); } }


        public void RegisterTypes(IContainerRegistry containerRegistry)
        {

        }

        /// 
        /// 初始化,关联界面
        /// 
        /// 
        public void OnInitialized(IContainerProvider containerProvider)
        {
            var regionManager = containerProvider.Resolve();

           regionManager.RegisterViewWithRegion("FooterViewRegionName", typeof(FooterView));
        }

        public void GetRunTime()
        {
    

            Task.Run(new Action(async () =>
            {


                while (true)
                {
                    await Task.Delay(1000);
                    var time = DateTime.Now.ToString("yyy-MM-dd HH:mm:ss");
                    RunTime = "运行时间:" + time;
                }
            }));
        }

        public FooterViewModel(IRegionManager regionManager)
        {
            GetRunTime();
        }

    }
}

 

3、模块创建成功后,如何在主程序加载底部模块

第三步:加载模块,prism提供四种加载方式,具体请看官方demo调用方式

             //界面上配置一个区域用于加载该模块
                    
                        
                    

配置加载方式

protected override IModuleCatalog CreateModuleCatalog()
{
    //路径方式加载模块
    return new DirectoryModuleCatalog() { ModulePath = @".\" };
}

这样,如有模块内容有需求变更只需要替换该模块的dll 就可以了

总结:这里只体现了路径加载模块的应用,还有配置文件方式,代码方式等,如需要进一步了解请看官方DEMO

 

 

 

你可能感兴趣的:(Prism,MVVM,WPF,wpf)