Prism Sample 3 自定义Region

2023-07-29,,

在例2中,我们使用了一个Region

<ContentControl prism:RegionManager.RegionName="ContentRegion" />

上面使用了ContentControl,但在prism中,不是每个控件都能定义为Region的。比如Stack Panel就不行,Grid也不行。如果要用到这样的控件作为区域,就需要定义一个RegionAdapter。
下面就以Stack Panel为例:
  public class StackPanelRegionAdapter : RegionAdapterBase<StackPanel>
{
public StackPanelRegionAdapter(IRegionBehaviorFactory regionBehaviorFactory)
: base(regionBehaviorFactory)
{ } protected override void Adapt(IRegion region, StackPanel regionTarget)
{
region.Views.CollectionChanged += (s, e) =>
{
if (e.Action == System.Collections.Specialized.NotifyCollectionChangedAction.Add)
{
foreach (FrameworkElement element in e.NewItems)
{
regionTarget.Children.Add(element);
}
} //handle remove
};
} protected override IRegion CreateRegion()
{
return new AllActiveRegion();
}
}

有了Adapter,就可以在Stack Panel中定义Region

 <StackPanel prism:RegionManager.RegionName="ContentRegion" />

Prism Sample 3 自定义Region的相关教程结束。

《Prism Sample 3 自定义Region.doc》

下载本文的Word格式文档,以方便收藏与打印。