我在我的Wpf应用程序中使用Prism进行导航。我有几个模块,每个模块都通过使用引导程序中的IoC容器发送的常用命令在主菜单中注册。菜单条目绑定到常见的导航命令 - 这将在某些区域打开正确的视图。全部基于我通过Prism网站找到的建议。棱镜 - 有条件导航
我现在的问题是,我有一个模块,其中有一个条件说明如果我想打开主区域中的ViewA或ViewB。示例:假设我有一个客户模块 - 然后是一个“客户”菜单项,它将在主视图中打开客户模块。还有一个条件:如果我有一个活跃的客户,我想在点击菜单项时打开CustomerDetailsView,否则我想打开CustomersAdminView。
解决此问题的建议方法是什么?我看到了一些选择,但我认为他们都听起来有点冒失。现在我正在创建上面示例中的MasterCustomerView。然后这个视图将检查条件并打开UserControl,给出Admin的详细信息。尽管我对这个解决方案并不满意 - 它会是一种合法的方法吗?好点?
感谢您的回复。我开始实施类似的方法,但很显然,这会变得有点复杂。所以如果有更好的解决方案,我想这样做。研究用事件聚合来解决问题。看起来很有希望。 – stiank81
我以前见过一个事件聚合器解决方案,并且肯定会起作用(这是我最初的方式),但它变得非常混乱,并且您失去了关注点分离......您正在使模块负责操作菜单系统。它*起初感觉不错,但很快变得难以管理,特别是如果您有其他开发人员制作模块。 –
对我来说,看起来合理的是,模块本身在需要时决定做什么。这样做菜单项只是一个标题和点击时触发的事件。至少现在我发现这比在菜单项中构建逻辑更合理。 – stiank81