1

我目前有两张桌子。

Project
    int Number
    string Name
    List<WorkOrder> WorkOrders

WorkOrder
    int Number
    DateTime Date
    Project Project

我有一个带有主/详细视图的 WPF 窗口,它使用一个显示项目的 ListView 和一个显示使用 MVVM 和单个视图模型连接的 WorkOrders 的 DataGrid。一切都很好,但我的同事想做出一些改变。WorkOrder 编号中的第一个数字对应于材料的类型,即 1=木材,2=钢,3=塑料。他们希望项目列表包含材料类别以过滤详细视图。

Projects
 - 8888 - Some Project
   - Wood
   - Metal
   - Plastic
 - 9999 - Another Project
   - Wood
   - Metal
   - Plastic

我只是不确定我如何将数据绑定到我的数据中没有的东西。我创建了一个 TreeView 并使用我的 HierarchicalDataTemplate 中的转换器填充了材质节点,但我的 ViewModel 中没有任何东西可以绑定来查看从 ViewModel 中选择的内容。我希望这是有道理的。提前感谢我们的回复。

4

1 回答 1

0

伙计,当您使用 MVVM 时,您应该将视图所需的所有数据放入视图模型中。您说您在 aTreeView中添加了代表材料选择的材料集合......我假设您将该集合属性放入您的视图模型中。

您现在需要做的就是添加从TreeView.SelectedItem属性到WorkOrder对象属性的链接,这样当用户选择材料时,您与TreeView.SelectedItem属性的绑定将更新对象中的相关属性WorkOrder

您还说“数字中的第一个数字WorkOrder对应于材料的类型”......如果您想使用绑定,则需要更改它,因此Material在您的WorkOrder对象中添加一个新的类型属性。然后,您将能够将该属性(您的WorkOrder类型的每个实例)绑定到该TreeView.SelectedItem属性。

于 2013-08-13T11:33:28.570 回答