新建一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 Discovery和View 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));//後添加
}
}