如何在 WPF/Silverlight 中设置标题/行
您是否有在 WPF 或 Silverlight 中设置标题/行表单(也称为标题/详细信息)的最佳实践? 最好使用模式-视图-视图模型设计模式来适应我的应用程序的其余部分。
一个例子是,如果我有一个显示数据库中所有 SalesOrders 的网格,并且下面有一个网格显示所选销售订单的所有 SalesOrderDetails(销售订单的各个行...已售出的每个项目)顶部网格。
我意识到我可以在 Grid 的 SelectionChanged 事件的文件隐藏代码中执行此操作,但我更喜欢在所有 XAML 和 ViewModel 代码中采用声明性方式执行此操作。 这可能吗?
谢谢, 罗伊
Do you have any best practices for setting up Header/Lines forms (Also known as Header/Details) in WPF or Silverlight? Preferably using the Mode-View-ViewModel design Pattern to fit in with the rest of my application.
An example would be if I had a grid that displayed all SalesOrders in the database, and the underneath that a grid that showed all of the SalesOrderDetails (The individual lines for the sales order...each item sold) for the selected sales order in the top grid.
I realize I could do this in the code behind file on the Grid's SelectionChanged event, but I'd prefer a declarative way of doing so...in all XAML and ViewModel code. Is this possible?
Thanks,
Roy
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
对我来说,标题/行听起来很像“主 - 细节”模式。 使用 MVVM 实现这样的事情非常简单。
如果我们要创建一个具有 MasterViewModel 和 DetailViewModel 的结构,那么在 MasterViewModel 中我们只需要一个属性来表示我们的详细信息列表和当前详细信息。 在视图中,我们可以将列表的 ItemSource 绑定到 Details 集合,并将 SelectedItem 绑定到 CurrentDetail 属性。 然后,我们可以有一个单独的视图,作为 DataTemplate 或 UserControl,它表示 CurrentDetail 并在详细信息网格中显示我们的值。
还有一些关于实现主详细信息模式 XAML 的好资源。
Bea Stollnitz 有两个使用 XML 作为数据源的优秀示例:此处 和 这里。
有一个 有关在 WPF 中实现该模式的 MSDN 视频。 (该视频是用 VB 编写的,但可以用 C# 下载代码)。
在此 MSDN 论坛讨论 Johnny Q. 演示了使用 MVVM 的简单主从设置。
很多 Karl Shifflett 的示例最终也演示了主从模式,尽管代码通常是用 VB 编写的(但是有些示例同时带有 C# 和 VB 代码。)
Header/Lines sounds a lot like the Master - Detail pattern to me. To implement something like this using MVVM is quite simple.
If we were to create a structure where we had a MasterViewModel and a DetailViewModel then in our MasterViewModel we would simply need a property to represent our list of Details and the current Detail. In the View we can bind a list's ItemSource to the collection of Details and bind the SelectedItem to the CurrentDetail property. We can then have a seperate View, as a DataTemplate or UserControl, that represents the CurrentDetail and displays our values in the detail grid.
There's also some good resources out there on implementing a Master Detail pattern XAML.
Bea Stollnitz has two excelent samples using XML for the Data Sources: Here and Here.
There's a MSDN video on implementing the pattern in WPF. (The video is in VB but the code can be downloaded in C#).
In this MSDN forums discussion Johnny Q. demonstrates a simple Master-Detail settup using MVVM.
A lot of Karl Shifflett's examples also end up demonstrating the Master-Detail pattern, though the code is usually in VB (however some examples come with both C# and VB code.)