使用Prism区域创建“可合并”工具栏?

时间:2013-04-12 15:04:26

标签: wpf prism

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

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

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

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

不言而喻,在离开视图时应删除相关按钮。

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

1 个答案:

答案 0 :(得分:0)

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

建议:例如,您的“工具栏”可能是某些ItemsControl,其中ItemsSource是某个类ToolBarOperation的集合。此类可以包含要向用户显示的描述以及单击时要执行的ICommand。将您的ItemsControl项设置为按钮,并将每个按钮的命令绑定到您班级的ICommand。此集合将由当前可见视图的viewmodel填充(即View1的viewmodel已经知道它将负责执行哪些命令。加载View1时,使用{{1}填充集合}的ViewModel1列表。)

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