Wpf DataGrid中Comboxbox的上下文感知项
在WPF应用程序的Wpf DataGrid中Comboxbox的上下文感知项,wpf,data-binding,combobox,datagrid,Wpf,Data Binding,Combobox,Datagrid,在WPF应用程序的DataGrid中获取了一个DataTemplateColumn。 DataTemplate定义一个组合框。 对于组合框所在的同一行,组合框显示的项目列表需要根据另一个绑定的ItemsSource字段的值进行更改。由于其他原因,我没有使用ComboBoxColumn和cant 目前已尝试将组合框的项源绑定到xaml中的对象数据提供程序,然后在数据网格的选择更改的事件处理程序中设置对象数据提供程序的方法参数 选中后,相应行中的组合框项将正确更新,但所有其他组合框也会更新。这将导致
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,在我的情况下,是的,我可以控制我的虚拟机,所以我按照您的建议做了,而且效果不错。