如何从儿童视角向屏幕导体提出行动?

时间:2014-07-14 08:46:52

标签: wpf caliburn.micro

我正在使用Caliburn.Micro构建我的第一个WPF应用程序,一个类似向导的应用程序。我在围绕如何连接屏幕的正确设计时遇到了一些麻烦。我有一个Conductor<Screen>作为我的shell视图模型,然后在我的第一个屏幕上执行ActivateItem。到目前为止,一切都很好。从这里开始,屏幕应该如何最好地告诉指挥在这个屏幕上可以采取什么行动(例如Next,Previous,Cancel等),以及如何处理给定的动作?

我见过的所有例子都相当简单,并没有包括这些问题。我当然可以让每个屏幕定义它自己的按钮,然后让指挥为每个屏幕订阅一个事件处理程序,但它会变得非常混乱(有大约10个屏幕,一个和三个按钮之间每)。

我尝试让屏幕显示一个AvailableActions属性,shell可以绑定并显示正确的按钮,但我无法找到一种方法将按钮连接到相应的屏幕而不添加很乱。

据我了解设计理念,我应该避免让屏幕的视图模型彼此了解,而导体应该是控制流程的导体。然而,我不希望导体必须在导体中为每个可用按钮的屏幕设置特殊情况代码。我这是对的吗?在这种情况下,我应该如何实现这两个目标?

1 个答案:

答案 0 :(得分:0)

通常使用Page Class来实现类似向导的应用程序:

<Page
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    x:Class="SDKSample.HomePage">
  Hello, from the XBAP HomePage!
</Page>

您可以添加Hyperlink元素以在页面之间导航:

<Hyperlink NavigateUri="UriOfPageToNavigateTo.xaml">
  Navigate to Another Page
</Hyperlink>

请阅读MSDN上的Navigation Overview页面以获取更多信息。