Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用MVVM绑定到不在我的模型中的数据_C#_Wpf_Mvvm - Fatal编程技术网

C# 如何使用MVVM绑定到不在我的模型中的数据

C# 如何使用MVVM绑定到不在我的模型中的数据,c#,wpf,mvvm,C#,Wpf,Mvvm,我现在有两张桌子 Project int Number string Name List<WorkOrder> WorkOrders WorkOrder int Number DateTime Date Project Project 我只是不知道如何将数据绑定到我的数据中没有的东西。我在HierarchycalDataTemplate中创建了一个树状视图,并使用转换器填充了材质节点,但在我的ViewModel中没有任何可绑定的内容

我现在有两张桌子

Project
    int Number
    string Name
    List<WorkOrder> WorkOrders

WorkOrder
    int Number
    DateTime Date
    Project Project

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

杜德,当您使用MVVM时,您应该将视图需要的所有数据放入视图模型中。你说你在树视图中添加了一组材料,代表材料的选择。。。我假设您将该集合属性放入视图模型中

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


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

Er。。。向视图模型中添加一个属性来表示所选项目如何?您可以将其绑定到TreeView.SelectedItem属性,尽管该属性是只读的,因此您需要在绑定中设置Mode=单向。该属性是什么类型?如果用户选择了一个不在模型中的项目,我如何知道它属于哪个项目?我的视图模型中的属性只是LINQ GroupBy中的一个iGroup。然后绑定使用转换器转换字符串中的组。因此,ViewModel中的my属性只是一个字符串,没有对其位于ViewModel下的项目的引用。我本来希望有一个诀窍,但现在我看到我必须将所有数据包装在某种层次类中,我将绑定到树视图。
Projects
 - 8888 - Some Project
   - Wood
   - Metal
   - Plastic
 - 9999 - Another Project
   - Wood
   - Metal
   - Plastic