Prism框架核心概念
Prism核心概念-Shell
简要解释:
WPF控件部分为静态部分,在编译前就确定的部分。
Region部分属于在运行是确定的部分。
Prism核心概念-Region
Region就相当于是一个占位符,里面填充的数据是我们定义的视图页面,通过以下这句话进行关联。
只有部分控件可以定义Region,其他控件想要定义Region,需要将Region与适配器之间,在BootStrapper中建立映射关系才行。
定义Region的两种方式
(1)在XAML界面指定
直接在代码中使用如下方式可以定义一个Region的名字,然后通过RegisterViewWithRegion进行关联。
<ContentControl prism:RegionManager.RegionName="ContentRegion" />
在MainWindowViewModel.cs代码中进行引用
public MainWindowViewModel(IRegionManager regionManager)
{
this.regionManager = regionManager;
regionManager.RegisterViewWithRegion("contentRegion",typeof(ViewA));
}
(2)在代码中指定
使用RegionManager.SetRegionName(Code)来进行定义。在XAML文件中使用如下代码,来定义一个name。
<Grid>
<ContentControl x:name="Ctr"/>
</Grid>
再在MainWindow.xaml.cs中进行定义。
public MainWindow()
{
InitializeComponent();
RegionManager.SetRegionName(Ctr,"ContentRegion");
}
Prism核心概念-区域适配器
以StackPanel为例,可以有两种方式来定义一个官方未提供的区域适配器
(1) 可以通过把Region嵌入到StackPanel中的方式来进行引入。
<Grid>
<StackPanel>
<ContentControl prism:RegionManager.RegionName="ContentRegion" />
</StackPanel>
</Grid>
(2) 使用适配器
注册适配器的代码
using Prism.Regions;
using System.Windows;
using System.Windows.Controls;
namespace Regions
{
public class StackPanelRegionAdapter : RegionAdapterBase<StackPanel>
{
public StackPanelRegionAdapter(IRegionBehaviorFactory regionBehaviorFactory)