【问题标题】:How to manage toolbars with mvvm and WPF如何使用 mvvm 和 WPF 管理工具栏
【发布时间】:2010-04-09 11:21:56
【问题描述】:

我正在寻找一种在 WPF 中使用 mvvm 管理工具栏(和菜单)的流畅方法。

考虑一个带有选项卡式工作区和异构内容的 UI(如 Visual Studio)。根据活动选项卡,工具栏应隐藏或可见。您将如何设计工具栏的视图视图模型?

我会使用工具栏视图模型的集合并将 ToolbarTray 绑定到它,但这是不可能的。

感谢任何建议。 欢迎提供示例、最佳实践论文等的链接。

【问题讨论】:

    标签: wpf mvvm toolbar


    【解决方案1】:

    我最近在我的一个应用程序中遇到了同样的问题。我使用功能区作为我的主要工具栏,并且根据选择的模块,功能区上的按钮必须隐藏或显示。我想出了两种不同的解决方案……希望一种对你有用。

    第一个解决方案是在应用程序的外壳中创建一个区域(可以是 Grid/Canvas/其他),并根据用户单击的选项卡将所需的工具栏动态加载到该区域中。换句话说,如果您有 5 个不同的选项卡需要自己​​的工具栏,请创建 5 个包含工具栏的用户控件,并在用户单击选项卡时将正确的选项卡加载到区域中。接下来,您将要响应用户单击工具栏上的按钮时的事件。在我的解决方案中,我使用了Mediator 方法来允许 ViewModel 相互通信。它有效,但我不知道我会以这种方式再次这样做...... CAL 可能是更好的方法。

    另一种解决方案是创建一个包含所有必需按钮的工具栏,并将它们的可见性绑定到 ViewModel。根据用户的选择,将控件的可见性设置为您的任何要求。希望其中一种解决方案适合您。

    顺便问一下……您来自德国的哪个地区?我认识一个姓斯托尔的人,所以我不确定这是否是一个普通的名字......

    【讨论】:

    • 我做了与您的第一个解决方案类似的事情,但使用了单个 UserControl。主要是我尝试使用 DataTemplates 和 DataType 来选择工具栏视图,但没有解决这个问题,所以我最终为每个工具栏使用了相同的 UserControl。这些项目是数据绑定的。所以这很好用,但不如您的解决方案灵活。关于能见度问题,我使用了类似的方法。这可以很容易地用 Merge/Unmerge 方法封装到一个类中。我来自巴登-符腾堡州。但这个名字来自几代前的图林根。
    • UserControls 不能放在 ToolBarTrays 内
    猜你喜欢
    • 1970-01-01
    • 2010-11-11
    • 1970-01-01
    • 2012-02-06
    • 2021-12-05
    • 1970-01-01
    • 1970-01-01
    • 2010-12-05
    • 1970-01-01
    相关资源
    最近更新 更多