【发布时间】:2014-09-04 03:23:19
【问题描述】:
我正在使用 Caliburn.Micro 构建我的第一个 WPF 应用程序,一个类似向导的应用程序。我在思考如何连接屏幕的正确设计时遇到了一些麻烦。我有一个Conductor<Screen> 作为我的外壳视图模型,然后我在我的第一个屏幕上执行ActivateItem。到目前为止,一切都很好。然而,从这里开始,屏幕应该如何最好地告诉指挥者在这个屏幕上可以执行哪些操作(例如下一个、上一个、取消等),以及针对给定的操作要做什么?
我看到的所有示例都相当简单,没有包含这些问题。我当然可以让每个屏幕定义它自己的按钮,然后让指挥为每个屏幕订阅一个事件处理程序,但它会变得非常混乱(大约有 10 个屏幕,每个屏幕上有 1 到 3 个按钮)。
我尝试让屏幕显示 AvailableActions 属性,shell 可以绑定到该属性并显示正确的按钮,但我想不出一种方法将按钮连接到相应的屏幕而不增加很多混乱.
就我理解的设计理念而言,我应该避免让屏幕的视图模型相互了解,而应该是指挥者控制流动。然而,我不希望指挥必须在每个屏幕上的按钮可用的指挥中都有特殊的案例代码。我在这方面是正确的吗?在这种情况下,我应该如何实现这两个目标?
【问题讨论】:
标签: wpf caliburn.micro