gpt4 book ai didi

c# - 从 Prism 中的导航控件动态加载 View 的最佳方法是什么

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

我已经使用 Menu 控件在我的应用程序中实现了导航,该控件在单击菜单项时使用 EventAggregator 发布一个事件。如下所示,

this.eventAggregator.GetEvent<ViewRequestedEvent>()
.Publish(new BusinessObject.Model.MenuModel
{
Module = "Dashboard",
PresenterClass = "DashboardViewModel"
});

我的应用程序中的大多数模块都是此事件的订阅者。他们使用过滤器仅订阅那些与模块相关的事件

this.eventAggregator.GetEvent<ViewRequestedEvent>()
.Subscribe(LoadViewRequest, ThreadOption.UIThread, true, i => i.Module == "Dashboard");

查看请求是这样处理的:

private void LoadRequestedView(MenuModel menuItem)
{
try
{
IDashboardViewModel viewModel = this.container.Resolve(Type.GetType(menuItem.PresenterClass)) as IDashboardViewModel;
this.regionManager.Regions["ViewRegion"].Add(viewModel.View);
this.regionManager.Regions["ViewRegion"].Activate(viewModel.View);
this.eventAggregator.GetEvent<ViewNotificationEvent>().Publish(menuItem.Description);
}
catch (ResolutionFailedException) { }
}

您如何评价此实现?如果您认为它很糟糕,请帮助我改进它或提出更好的替代方案。

最佳答案

我认为这个模型在关注点分离方面存在某种缺陷。我通常尽量保持对 Shell 的介绍。请参阅此问题以了解我将如何实现这一点。它简化了事情并将 RegionManager 的概念从模块中抽象出来:

Integrating Modules with Application in Prism aka CompositeWpf

关于c# - 从 Prism 中的导航控件动态加载 View 的最佳方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1678423/

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