我正在开发一个WPF应用程序,我希望在屏幕顶部有一个常用工具栏(当我说“工具栏”它不是WPF工具栏控件时,更可能只是一系列类似于图像按钮的图像按钮Windows 8应用栏)。我正在使用棱镜导航。
我想到的是这个工具栏将存在于主窗口中,并且始终在整个应用程序中可见。工具栏将包含几个标准按钮,如“退出”和“帮助”。
在工具栏下方,主窗口基本上只包含一个大的棱镜区域。当我将这个区域导航到一个视图(称之为“view1”)时,我希望view1在工具栏中添加其他按钮。
现在,“view1”可能有自己的Prism区域,当其中一个被导航到一个视图(称之为“view2”)时,view2应该能够添加自己的按钮,以及“标准”主窗口按钮和由view1添加的按钮。
不言而喻,在离开视图时应删除相关按钮。
我确信我可以推出自己的解决方案,但是想知道我是否可以用Prism简化事情?我想到将Prism区域放在工具栏中的“标准”按钮旁边。然后,“view1”会将此区域导航到基本上只包含view1按钮的视图。这个“view1按钮视图”本身可以包含一个区域,view2可以导航到它自己的“按钮视图”。这是可行的,还是会变得太复杂?
答案 0 :(得分:0)
听起来你可能会让它复杂一点,或者至少你最后失去了我......但今天这并不需要太多!
建议:例如,您的“工具栏”可能是某些ItemsControl
,其中ItemsSource
是某个类ToolBarOperation
的集合。此类可以包含要向用户显示的描述以及单击时要执行的ICommand。将您的ItemsControl
项设置为按钮,并将每个按钮的命令绑定到您班级的ICommand。此集合将由当前可见视图的viewmodel填充(即View1
的viewmodel已经知道它将负责执行哪些命令。加载View1
时,使用{{1}填充集合}的ViewModel1
列表。)
所以,为了回答你的问题,我认为你不需要任何特定的Prism(除了他们的ToolBarOperation
的实现)...文档中讨论的“控制器模式”可能会有所帮助。但是,与Prism一起实现你想要的东西并不难。