【发布时间】:2010-04-09 11:21:56
【问题描述】:
我正在寻找一种在 WPF 中使用 mvvm 管理工具栏(和菜单)的流畅方法。
考虑一个带有选项卡式工作区和异构内容的 UI(如 Visual Studio)。根据活动选项卡,工具栏应隐藏或可见。您将如何设计工具栏的视图视图模型?
我会使用工具栏视图模型的集合并将 ToolbarTray 绑定到它,但这是不可能的。
感谢任何建议。 欢迎提供示例、最佳实践论文等的链接。
【问题讨论】:
我正在寻找一种在 WPF 中使用 mvvm 管理工具栏(和菜单)的流畅方法。
考虑一个带有选项卡式工作区和异构内容的 UI(如 Visual Studio)。根据活动选项卡,工具栏应隐藏或可见。您将如何设计工具栏的视图视图模型?
我会使用工具栏视图模型的集合并将 ToolbarTray 绑定到它,但这是不可能的。
感谢任何建议。 欢迎提供示例、最佳实践论文等的链接。
【问题讨论】:
我最近在我的一个应用程序中遇到了同样的问题。我使用功能区作为我的主要工具栏,并且根据选择的模块,功能区上的按钮必须隐藏或显示。我想出了两种不同的解决方案……希望一种对你有用。
第一个解决方案是在应用程序的外壳中创建一个区域(可以是 Grid/Canvas/其他),并根据用户单击的选项卡将所需的工具栏动态加载到该区域中。换句话说,如果您有 5 个不同的选项卡需要自己的工具栏,请创建 5 个包含工具栏的用户控件,并在用户单击选项卡时将正确的选项卡加载到区域中。接下来,您将要响应用户单击工具栏上的按钮时的事件。在我的解决方案中,我使用了Mediator 方法来允许 ViewModel 相互通信。它有效,但我不知道我会以这种方式再次这样做...... CAL 可能是更好的方法。
另一种解决方案是创建一个包含所有必需按钮的工具栏,并将它们的可见性绑定到 ViewModel。根据用户的选择,将控件的可见性设置为您的任何要求。希望其中一种解决方案适合您。
顺便问一下……您来自德国的哪个地区?我认识一个姓斯托尔的人,所以我不确定这是否是一个普通的名字......
【讨论】: