2

无论如何要从 PRISM C# WPF 中的区域获取主机控件/父控件。如果区域中没有视图,我正在尝试编写修改主机控件的自定义区域行为。

RegionBehavior 类中有一个 HostControl 属性,但它始终为空。我该如何设置?或如何获得主机控制。谢谢你的建议!

[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)
        {

        }
    }
}
4

1 回答 1

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 并检查了区域名称以查看是否有要执行的工作。不是很干净,但它的工作原理。

于 2013-09-26T14:24:16.900 回答