无论如何从PRISM C#WPF中的某个区域获取hostcontrol / parentcontrol。我试图编写一个自定义区域行为,如果区域中没有视图,则会修改hostcontrol。
RegionBehavior类中有一个HostControl属性,但它是alwasy null。我该怎么设置它?或者如何获得主机控制。 谢谢你的建议!
[Export(typeof(CollapseRegionBehavior))]
[PartCreationPolicy(CreationPolicy.NonShared)]
public class CollapseRegionBehavior : RegionBehavior, IHostAwareRegionBehavior
{
public DependencyObject HostControl { get; set; }
protected override void OnAttach()
{
if (this.Region.ActiveViews.Count() == 0)
{
}
}
}
答案 0 :(得分:2)
您是手动添加RegionBehavior还是在ConfigureDefaultRegionBehaviors
的引导程序中注册?
如果你像这样手动添加一个行为:
IRegion region = regionManager.Regions["MyRegion"];
region.Behaviors.Add("MyBehaviorKey", new MyBehavior());
IHostAwareRegionBehavior
界面无效。如果您查看RegionBehaviorCollection.cs(Prism.Dektop.Regions)中的PRISM源代码,您将清楚地看到Add方法不会执行与IHostAwareRegionBehavior
接口相关的任何操作。
但是在RegionAdapterBase.cs中,将在AttachDefaultBehaviors
中检查接口。
我最终在引导程序中注册了我的RegionBehavior并检查了区域名称以查看是否有工作要执行。不是很干净,但它确实有效。