【问题标题】:How to add menu to application in prism way in WPF application?如何在WPF应用程序中以棱镜方式向应用程序添加菜单?
【发布时间】:2013-05-12 06:29:21
【问题描述】:

我一直在关注股票交易者应用程序的 Prism 参考实施。我正在按照相同的方式构建应用程序。但我对如何以 Prism 方式向我的应用程序添加菜单有点困惑。参考实现似乎对此并不明确。任何建议都会很受重视。

【问题讨论】:

    标签: wpf mvvm prism


    【解决方案1】:

    模块化应用程序可以在很多事情上提供帮助,但它们也会使一些以前微不足道的任务看起来非常困难。我同意你的观点,Prism 书至少应该给出一些关于如何制作菜单的示例,但可能有很多方法可以做到。

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

    DataTemplate to generate Menu with MVVM

    【讨论】:

    • 你有没有把这个源托管在某个地方让我看看
    • @kbird 现在查看该链接问题的答案,我已经用一个完整的示例对其进行了更新。 File->Download 应该会给你 Zip。我希望这会有所帮助!
    • @kbird 只是好奇,你觉得这个例子怎么样?你认为你会做类似的事情吗,或者你有没有找到其他想法?
    • 感谢 Alan,我能够根据您的解决方案使其正常工作。谢谢指导。非常感谢!
    【解决方案2】:

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

    一切都是香草棱镜。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-02-14
      • 2011-12-08
      • 2021-02-22
      • 1970-01-01
      • 2012-09-28
      • 1970-01-01
      • 2011-02-18
      相关资源
      最近更新 更多