【问题标题】:Creating a "mergeable" toolbar with Prism regions?使用 Prism 区域创建“可合并”工具栏?
【发布时间】:2013-04-05 04:23:21
【问题描述】:

我正在开发一个 WPF 应用程序,我希望在屏幕顶部有一个公共工具栏(当我说“工具栏”时,它不会是 WPF 工具栏控件,更可能只是一系列类似于Windows 8 应用栏)。我正在使用 Prism 导航。

我的想法是,这个工具栏将位于主窗口中,并且在整个应用程序中始终可见。工具栏将包含几个标准按钮,例如“退出”和“帮助”。

在工具栏下方,主窗口基本上只包含一个大的 Prism 区域。当我将此区域导航到视图(称为“view1”)时,我希望 view1 将其他按钮添加到工具栏中。

现在,“view1”可能有自己的 Prism 区域,当其中一个被导航到视图(称为“view2”)时,view2 应该能够在“标准”旁边添加自己的按钮主窗口按钮 view1 添加的按钮。

不用说,在离开视图时应该移除相关按钮。

我确信我可以推出自己的解决方案,但想知道我是否可以使用 Prism 简化事情?我考虑在“标准”按钮旁边的工具栏中放置一个 Prism 区域。 “view1”然后会将这个区域导航到一个基本上只包含 view1 按钮的视图。这个“view1 按钮视图”本身可以包含一个区域,该区域可以导航到它自己的“按钮视图”。这是可行的,还是会变得太复杂?

【问题讨论】:

  • 我不熟悉 Prism,但我在自己的 MVVM 框架中使用主 ViewModel 中的 ObservableCollection<DelegateCommand> 实现了这一点,然后根据子 ViewModel 的生命周期添加/删除项目.

标签: wpf prism


【解决方案1】:

听起来你可能有点复杂,或者至少你在最后失去了我......但今天并不需要太多!

建议:例如,您的“工具栏”可能是一些 ItemsControl,而您的 ItemsSource 是某个类 ToolBarOperation 的集合。此类可以包含要显示给用户的描述和单击时要执行的 ICommand。将ItemsControl 的项目设置为按钮并将每个按钮的命令绑定到类的 ICommand。该集合将由当前可见视图的视图模型填充(即View1 的视图模型已经知道它将负责执行哪些命令。当View1 加载时,用ViewModel1 的@ 列表填充集合987654328@.)

所以,要回答您的问题,我认为您不需要任何特定于 Prism 的东西(除了他们对 DelegateCommand 的实现)......文档中讨论的“控制器模式”可能会有所帮助。但是,与 Prism 一起完成您想要的事情应该不难。

【讨论】:

  • 是的,一定是星期五。我没有想到明显(和简单) - 只是使用某种可绑定的集合。我仍然习惯于以 WPF 为导向的方式思考,或者如 Doc Brown 所说的“第四维度”。
猜你喜欢
  • 2012-10-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多