Prism7中RegionName與Model關聯的幾種方法

新建一PrismBlankApp(WPF)項目BlankApp1,添加一PrismModule(WPF)項目Module1,

 

 

RegionName與Model關聯的方法有:

方法1:在MainWindow.xaml.cs的構造函數中關聯

    public partial class MainWindow : Window

    {

        public MainWindow(IRegionManager regionManager)

        {

            InitializeComponent();

            //view discovery

            regionManager.RegisterViewWithRegion("ContentRegion", typeof(ViewA));

        }

    }

方法2:在MainWindowViewModel.cs中關聯

 

   public class MainWindowViewModel : BindableBase

    {

        private string _title = "Prism Application";

        public string Title

        {

            get { return _title; }

            set { SetProperty(ref _title, value); }

        }

 

        public IRegionManager RegionManager { get; }

        public IUnityContainer Container { get; }

        public DelegateCommand<object> Command1 { get; private set; }

        public MainWindowViewModel(IUnityContainer _container, IRegionManager regionManager)

        {

            Container = _container;

            RegionManager = regionManager;

            this.Command1 = new DelegateCommand<object>(Execute, CanExecute);

        }

        private void Execute(object obj)

        {

            //Prism中有兩種方式來定義視圖與Region之間的映射關係——View DiscoveryView Injection

 

            //View Discovery  View發現

            RegionManager.RegisterViewWithRegion("ContentRegion2", typeof(ViewA));

 

            //View Injection  View注入

            var view = Container.Resolve<ViewA>();

            IRegion region = RegionManager.Regions["ContentRegion1"];

            region.Add(view);

        }

        /// <summary>

        /// 檢測命令是否可以執行

        /// </summary>

        /// <param name="arg"></param>

        /// <returns></returns>

        private bool CanExecute(object arg)

        {

            return true;

        }

    }

 

方法3

 步驟1:在App.xaml.cs中添加

        protected override void ConfigureModuleCatalog(IModuleCatalog moduleCatalog)

        {

            base.ConfigureModuleCatalog(moduleCatalog);

            moduleCatalog.AddModule(typeof(Module1Module));

 

        }

 

 

 

步驟2:在項目Module1中的Module1Module.cs中添加

public class Module1Module : IModule

    {

        IRegionManager _regionManager;//後添加

        public Module1Module(IRegionManager regionManager)//後添加

        {//後添加

            _regionManager = regionManager;//後添加

        }//後添加

        public void OnInitialized(IContainerProvider containerProvider)

        {

        }

        public void RegisterTypes(IContainerRegistry containerRegistry)

        {

            _regionManager.RegisterViewWithRegion("ContentRegion1", typeof(ViewA));//後添加

        }

    }

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章