1

您是否有在 WPF 或 Silverlight 中设置页眉/行表单(也称为页眉/详细信息)的最佳实践?最好使用 Mode-View-ViewModel 设计模式来适应我的应用程序的其余部分。

一个例子是,如果我有一个显示数据库中所有 SalesOrders 的网格,并且在该网格下方显示所选销售订单的所有 SalesOrderDetails(销售订单的各个行......每个售出的项目)顶部网格。

我意识到我可以在网格的 SelectionChanged 事件的文件后面的代码中执行此操作,但我更喜欢这样做的声明性方式......在所有 XAML 和 ViewModel 代码中。这可能吗?

谢谢,罗伊

4

1 回答 1

2

对我来说,标题/行听起来很像 Master-Detail 模式。使用 MVVM 实现这样的事情非常简单。

如果我们要创建一个包含 MasterViewModel 和 DetailViewModel 的结构,那么在 MasterViewModel 中我们只需要一个属性来表示我们的详细信息列表和当前详细信息。在视图中,我们可以将列表的 ItemSource 绑定到 Details 集合,并将 SelectedItem 绑定到 CurrentDetail 属性。然后,我们可以有一个单独的视图,作为 DataTemplate 或 UserControl,它表示 CurrentDetail 并在详细信息网格中显示我们的值。

还有一些关于实现 Master Detail 模式 XAML 的好资源。

Bea Stollnitz 有两个使用 XML 作为数据源的优秀示例:HereHere

有一个关于在 WPF 中实现该模式的MSDN 视频。(视频是VB,但代码可以用C#下载)。

在这个MSDN 论坛讨论中,Johnny Q. 演示了一个使用 MVVM 的简单 Master-Detail 设置。

很多Karl Shifflett 的示例最终也展示了 Master-Detail 模式,尽管代码通常是在 VB 中(但是有些示例同时带有 C# 和 VB 代码。)

于 2009-06-04T20:19:46.280 回答