gpt4 book ai didi

c# - region activation 和 region RequestNavigate 有什么区别?

转载 作者:太空狗 更新时间:2023-10-29 22:59:20 26 4
gpt4 key购买 nike

我使用一个区域和两个 View 。我有一个 ComboBox,让用户可以选择区域中的 View 。

我有两个问题:

第一个问题是:

_regionManager.Regions.Add("MyRegion")
_regionManager.Regions["MyRegion"].Add(container.Resolve<OneView>())
_regionManager.Regions["MyRegion"].Add(container.Resolve<SecondView>())

收件人:

_regionManager.RegisterViewWithRegion("MyRegion", () => container.Resolve<OneView>());
_regionManager.RegisterViewWithRegion("MyRegion", () => container.Resolve<SecondView>());

我的第二个问题是:

_regionManager.Regions["MyRegion"].ActiveViews.ForEach(view => _region.Deactivate(view));
_regionManager.Regions["MyRegion"].Activate(container.Resolve<SecondView>());

收件人:

_regionManager.Regions["MyRegion"].RequestNavigate(new Uri("SecondView", UriKind.Relative));

提前致谢。

最佳答案

您提到的第一个比较的区别是 RegisterViewWithRegion() 方法在过程结束时激活注册的 View 而第一个实现只添加了Views。这种RegisterViewWithRegion() 方法称为View Discovery。您可能会在您昨天发表的以下帖子中找到相关答案:

有关 MSDN Prism 指南 的有用信息:

对于第二个比较,这将取决于Region 类型。第一个实现只会让 SecondView 处于激活状态。但是,如果 RegionRequestNavigate() 可能不会停用之前的View ItemsControl 类型。 ItemsControl 区域 可让您附加许多Views,这样您就可以拥有多个事件的View

如果是这种情况,SecondView 将出现在 Region 中先前事件的 View 下方。但是如果你不想要这种行为,你有两个选择:

  1. Region 类型设为 ContentControl,这样一次只会显示一个 View ;
  2. OnNavigatedFrom() 方法中停用之前的 View。您需要使以前的 View 继承自 INavigationAware

关于 RequestNavigate()Navigation 的有用信息,在 MSDN Prism 指南 中:

我希望这对您有所帮助,问候。

关于c# - region activation 和 region RequestNavigate 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21850368/

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