【发布时间】:2013-05-12 06:29:21
【问题描述】:
我一直在关注股票交易者应用程序的 Prism 参考实施。我正在按照相同的方式构建应用程序。但我对如何以 Prism 方式向我的应用程序添加菜单有点困惑。参考实现似乎对此并不明确。任何建议都会很受重视。
【问题讨论】:
我一直在关注股票交易者应用程序的 Prism 参考实施。我正在按照相同的方式构建应用程序。但我对如何以 Prism 方式向我的应用程序添加菜单有点困惑。参考实现似乎对此并不明确。任何建议都会很受重视。
【问题讨论】:
模块化应用程序可以在很多事情上提供帮助,但它们也会使一些以前微不足道的任务看起来非常困难。我同意你的观点,Prism 书至少应该给出一些关于如何制作菜单的示例,但可能有很多方法可以做到。
当我在 Stackoverflow 上开始使用 Prism 时,我也问过同样的问题。一段时间后我回来并回答了我自己的问题。我的解决方案是创建一个 IMenuService,它允许我将菜单项添加到我的菜单中,该菜单是一个单独的模块。请在此处查看我对自己问题的回答:
【讨论】:
为了制作动态菜单,我使用了区域。我在ShellView 中做的第一件事是添加一个菜单并在其中设置一个区域。
<Menu prism:RegionManager.RegionName="MenuRegion">
</Menu>
当我需要模块中的菜单时,我会创建一个这样的用户控件:
<MenuItem x:Class="MyCompany.PrismApp.HelloWorldMenu">
<!-- ... -->
</MenuItem>
更改后面的代码,让类反映MenuItem的类型:
public partial class HelloWorldMenu : MenuItem
{
// ...
}
IModule的实现
public class SomeModule : IModule
{
public void Initialize()
{
// ...
this.RegionManager.RegisterViewWithRegion("MenuRegion", typeof(HelloWorldMenu));
}
}
一切都是香草棱镜。
【讨论】: