使用Caliburn.Micro组合框驱动的UI元素

我试图在一个小型测试WPF应用程序中了解Caliburn.Micro和MVVM。 我有一个自定义用户控件,其中有一个付款组合框(带有现金,支票,信用),在此组合框旁边,我想根据所选的付款类型加载相应的数据输入视图。 例如,如果用户选择现金,也许我只加载带有金额文本字段的视图,但如果用户选择信用,我将加载包含金额,信用卡类型,信用卡号等字段的视图。 Caliburn.Micro能以任何方式帮助解决这个问题吗?我一直想知道这是否是Caliburn.Micro中内置的屏幕和导体功能的用例,但我不确定。如果Caliburn可以帮助视图模型层次结构支持什么?我可以看到有一个PaymentViewModel包含一个PaymentTypeViewModel的实例,但我不知道我如何促进切换PaymentTypeViewModel实例,该实例将以某种方式基于组合框中的当前选择以及加载相关视图对于那个视图模型。 任何建议都非常感谢。     
已邀请:
有几种方法可以做到这一点,但使用Caliburn的
Conductor
Screen
类型最有意义。我想有一个问题是,一旦从用户那里获取数据,你将如何处理这些数据?当您在不同屏幕上从用户检索更多信息时,它是否会被持久化或临时存储为应用程序状态? 无论哪种方式,使用单个屏幕导体(
Conductor<T>
)是有意义的,它将保持对三种类型的支付检索屏幕中的每一种的引用。为每个支付屏幕创建一个视图模型和视图,实例化并存储对each0ѭ中每个引用的引用(或者更好地将这些引用作为依赖项注入到指挥的构造函数中,或者注入实例化它们的工厂类型)。 通过约定,如果调用
Payment
,组合框将自动将所选值绑定到导体上的
SelectedPayment
属性。在此属性的setter中,您可以根据
SelectedPayment
的值在相应的付款视图模型参考上调用
ActivateItem
方法。 据推测,您的导体上会有一个“OK”或类似的按钮,可以从当前活动的模型中检索数据(
ActiveItem
)。每个支付视图模型都可以实现一个接口,例如使用
GetPaymentDetails
方法,也许这可以返回准备好持久化的详细信息的序列化形式。 还应该在你的导体视图中提到(让我们假设它被称为ShellView.xaml),你可以使用
ContentControl
来显示当前的支付视图模型(并让Caliburn注入适当的视图并进行绑定),这被引用为
ActiveItem
<ContentControl x:Name="ActiveItem" />
请注意,你可能会有点发烧友,并给你的组合框(稍微模糊)名称
Items
,并将其
ItemsSource
绑定到您的付款视图模型的集合,这可以是
Conductor<T>.Collection.OneActive
Items
集合。 Caliburn会自动将所选值(付款视图模型)绑定到导体上的
ActiveItem
属性,因此当您更改组合框值时,当前视图将自动切换。     

要回复问题请先登录注册