gpt4 book ai didi

c# - 从 PRISM 中的区域获取 HostControl

转载 作者:太空宇宙 更新时间:2023-11-03 11:02:04 25 4
gpt4 key购买 nike

有没有办法从 PRISM C# WPF 中的区域获取主机控件/父控件。我正在尝试编写一个自定义区域行为,如果该区域中没有 View ,它会修改主机控件。

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 的 Bootstrap 中注册它?

似乎如果你像这样手动添加一个行为:

IRegion region = regionManager.Regions["MyRegion"];
region.Behaviors.Add("MyBehaviorKey", new MyBehavior());

IHostAwareRegionBehavior 接口(interface)无效。如果您查看 RegionBehaviorCollection.cs (Prism.Dektop.Regions) 中的 PRISM 源代码,您会清楚地看到 Add 方法不会执行任何与 IHostAwareRegionBehavior 接口(interface)相关的操作。

但是在 RegionAdapterBase.cs 中,在 AttachDefaultBehaviors 中检查接口(interface)。

我最终在 Bootstrap 中注册了我的 RegionBehavior 并检查了区域名称以查看是否有要执行的工作。不是很干净,但可以用。

关于c# - 从 PRISM 中的区域获取 HostControl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17297581/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com