C# 从PRISM中的区域获取HostControl

C# 从PRISM中的区域获取HostControl,c#,wpf,prism,prism-4,C#,Wpf,Prism,Prism 4,是否仍然可以从PRISM C#WPF中的区域获取hostcontrol/parentcontrol。我正在尝试编写一个自定义区域行为,如果区域中没有视图,它将修改hostcontrol RegionBehavior类中存在HostControl属性,但该属性始终为null。我如何设置它?或者如何获得主机控制权。 谢谢你的建议 [Export(typeof(CollapseRegionBehavior))] [PartCreationPolicy(CreationPolicy.NonShared)

是否仍然可以从PRISM C#WPF中的区域获取hostcontrol/parentcontrol。我正在尝试编写一个自定义区域行为,如果区域中没有视图,它将修改hostcontrol

RegionBehavior类中存在HostControl属性,但该属性始终为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)
        {

        }
    }
}

您是手动添加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,并检查了区域名称以查看是否有工作要执行。不是很干净,但很管用。

是的,我也注意到了。IHostAwareRegionBehavior似乎只在引导程序中工作,在该阶段之后,它无法找到HostControl。谢谢