gpt4 book ai didi

c# - Prism 区域 View 按需显示,如何在事件 View 中刷新控件

转载 作者:行者123 更新时间:2023-12-03 10:29:33 24 4
gpt4 key购买 nike

我正在使用 WPF、MVVM 和 PRISM 区域编写应用程序。

我有两个区域,每个区域有一个 View (A 和 B)。我在我的 regionmodules 类中向我的区域添加 View ,如下所示:

    // I use the following private properties in both regionmodules.cs class
private readonly IUnityContainer _container;
private readonly IRegionManager _regionManager;

- 一种 -
    private void RegisterViews()
{
var controlsView = _container.Resolve<EmulatorControlsView>();
_regionManager.Regions["ControlsRegion"].Add(controlsView, "A");
}

--B--
    private void RegisterViews()
{

var templatesView = _container.Resolve<TemplatesView>();
_regionManager.Regions["TemplatesRegion"].Add(templatesView, "B");

var view = _regionManager.Regions["TemplatesRegion"].GetView("B");
_regionManager.Regions["TemplatesRegion"].Deactivate(view);
}

我在我的应用程序初始化期间停用了 View “B”,因为 View ​​B 覆盖了我的 shell.xaml 中的 View A。

来自 View A 的单击命令将根据以下代码激活 View B 并停用 View A:
    private void LoadTemplateExecute()
{
var controlView = _regionManager.Regions["ControlsRegion"].GetView("A");
_regionManager.Regions["ControlsRegion"].Deactivate(controlView);

var templateView = _regionManager.Regions["TemplatesRegion"].GetView("B");
_regionManager.Regions["TemplatesRegion"].Activate(templateView);
}

我的模板区域 View 模型中存在其他按钮命令,用于停用 View A 和激活 View B。

这段代码效果很好,并且允许我按需显示我的 View 。

问题: View B 有一个 ListView 通过依赖属性绑定(bind)到 View 模型中的 ObservableCollection。我目前通过 View 模型构造函数将字符串项添加到我的 ObservableCollection 中:
    private void InitializeTemporaryLists()
{
TemplateList.Add("Dog");
TemplateList.Add("Cat");
TemplateList.Add("Horse");
}

但是,当 View B 被激活时,我的 ObservableCollection 不会显示其列表中的项目。

问题 :区域 View 或 View 模型中是否有可用的事件在 View 变为事件状态时通知我?
每次我的 View 变为事件状态时,我将数据从 View 模型填充到我的 View 的最佳方式是什么?

非常感谢任何想法和代码示例!

* 更新 *
我的 ListView 没有更新,因为我是一个愚蠢的程序员。我没有在我的依赖属性中声明 ObservableCollection<> 类型。

但是,我仍然很想知道你们那里的聪明程序员如何处理 Prism 区域 View 激活?我希望我可以订阅如下事件:
_regionManager.Regions["YourRegion"].OnActiveView() += HandleActiveViewEvent;

最佳答案

您可以实现 IActiveAware当 View 被激活和停用时接收通知的界面。如果您在 View 或 View 模型(但不是两者)上实现它,则由框架调用。

如果您想从 View 或 View 模型外部进行激活通知,您还可以监视该区域的 ActiveViews收集更改。这支持 INotifyCollectionChanged界面。

关于c# - Prism 区域 View 按需显示,如何在事件 View 中刷新控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12163112/

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