Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.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
Wpf DataGrid中Comboxbox的上下文感知项_Wpf_Data Binding_Combobox_Datagrid - Fatal编程技术网

Wpf DataGrid中Comboxbox的上下文感知项

Wpf DataGrid中Comboxbox的上下文感知项,wpf,data-binding,combobox,datagrid,Wpf,Data Binding,Combobox,Datagrid,在WPF应用程序的DataGrid中获取了一个DataTemplateColumn。 DataTemplate定义一个组合框。 对于组合框所在的同一行,组合框显示的项目列表需要根据另一个绑定的ItemsSource字段的值进行更改。由于其他原因,我没有使用ComboBoxColumn和cant 目前已尝试将组合框的项源绑定到xaml中的对象数据提供程序,然后在数据网格的选择更改的事件处理程序中设置对象数据提供程序的方法参数 选中后,相应行中的组合框项将正确更新,但所有其他组合框也会更新。这将导致

在WPF应用程序的
DataGrid
中获取了一个
DataTemplateColumn
DataTemplate
定义一个
组合框
。 对于组合框所在的同一行,
组合框
显示的项目列表需要根据另一个绑定的
ItemsSource
字段的值进行更改。由于其他原因,我没有使用
ComboBoxColumn
和cant

目前已尝试将
组合框的
项源
绑定到xaml中的
对象数据提供程序
,然后在
数据网格
选择更改的事件处理程序中设置
对象数据提供程序
方法参数

选中后,相应行中的
组合框
项将正确更新,但所有其他
组合框
也会更新。这将导致上一行中先前设置的组合框
的选定项被清除。我怀疑其他
组合框
会更新,因为它们都从绑定到的
ObjectDataProvider
接收到
PropertyChanged
事件。 我尝试将
组合框
ItemsSource
上的
绑定模式设置为
OneTime
,但没有效果


当选择了
数据网格行
时,如何让
组合框
绑定其
,但当选择了另一行(以及随后的
组合框
)时,如何不重新绑定然后将组合框的ItemsSource数据绑定到该组合框。
在我的例子中,我不需要添加属性来绑定Selecteditem,因为我已经绑定了ComboBox的SelectedValue和Text属性。

向DataGrid绑定的实体集合添加了一个额外的IEnumerable属性(加上生成项的逻辑),然后将ComboBox的ItemsSource数据绑定到该集合。
在我的情况下,我不需要添加属性来绑定Selecteditem,因为我已经绑定了组合框的SelectedValue和Text属性。

如果可能,您可以添加到
DataGrid
ViewModel
项目中
ComboBox
项目资源的新属性。并绑定此属性,而不是使用
ObjectDataProvider
。Sweet,在我的情况下,是的,我可以控制我的VM,因此我按照您的建议进行了操作,效果很好。如果可能,您可以将
DataGrid
项新属性添加到
组合框的
项源
视图模型
。并绑定此属性,而不是使用
ObjectDataProvider
。Sweet,在我的情况下,是的,我可以控制我的虚拟机,所以我按照您的建议做了,而且效果不错。