如何在WPF应用程序中以棱镜方式向应用程序添加菜单?

时间:2013-05-12 06:29:22

标签: wpf mvvm prism

我一直在关注股票交易者app的Prism参考实现。我正在以同样的方式构建应用程序。但我对如何以Prism方式向我的应用程序添加菜单感到困惑。参考实现似乎并不明确。任何建议都会非常明显。

2 个答案:

答案 0 :(得分:2)

模块化应用程序可以帮助解决很多问题,但是它们也可以使一些以前微不足道的任务变得非常困难。我同意你的观点,Prism书至少应该提供一些关于如何做菜单的例子,但是可能有很多方法可以做到。

当我在Stackoverflow上使用Prism时,我问了同样的问题。我回来一段时间后回答了我自己的问题。我的解决方案是创建一个IMenuService,允许我将菜单项添加到我的菜单,菜单是一个单独的模块。请在此处查看我对自己问题的回答:

DataTemplate to generate Menu with MVVM

答案 1 :(得分:1)

要制作动态菜单,我使用区域。我在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));
    }
}

所有都是香草棱镜。