如何在WPF / Silverlight中设置标题/行

时间:2009-06-04 17:38:35

标签: wpf silverlight xaml mvvm master-detail

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

一个例子是,如果我有一个网格显示数据库中的所有SalesOrders,下面是一个网格,显示所选的所有SalesOrderDetails(销售订单的各个行...每个销售的商品)顶部网格中的销售订单。

我意识到我可以在Grid的SelectionChanged事件的代码隐藏文件中执行此操作,但我更喜欢在所有XAML和ViewModel代码中执行此操作的声明方式。这可能吗?

谢谢, 罗伊

1 个答案:

答案 0 :(得分:2)

Header / Lines听起来很像Master - Detail模式给我。使用MVVM实现这样的东西非常简单。

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

在实现Master Detail模式XAML方面还有一些很好的资源。

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

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

在这次MSDN forums讨论中,Johnny Q.使用MVVM演示了一个简单的Master-Detail建立。

许多Karl Shifflett's示例最终也演示了Master-Detail模式,尽管代码通常是在VB中(但是一些示例包含C#和VB代码。)