ComboBox SelectedItem属性更新我的Datagrid行中的所有其他组合框

问题描述 投票:0回答:1

[我在该站点上看到过几篇与我的问题类似的文章,例如this onethis one,但我还没有为我工作。

我有一个datagrid绑定到类型为[[Foo的对象列表,并且我为每行添加了combobox。 ComboBox ItemSource不是Foo类的一部分,而是在视图模型中创建的。我知道这样做意味着此组合框的每一行都是相同的,但是在我的Xaml中没有办法将SelectedItem筛选为仅行吗?

这是我的Xaml:

<DataGridTemplateColumn Header="Foo Column" Width="100"> <DataGridTemplateColumn.CellTemplate> <DataTemplate> <ComboBox ItemsSource="{Binding Mode=OneWay,Path=DataContext.FooCollection, RelativeSource= {RelativeSource FindAncestor, AncestorType={x:Type DataGrid}}}" SelectedItem="{Binding DataContext.SelectedComboBoxItem, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged, RelativeSource= {RelativeSource FindAncestor, AncestorType={x:Type DataGrid}}}"> </ComboBox> </DataTemplate> </DataGridTemplateColumn.CellTemplate> </DataGridTemplateColumn>

这是我的ViewModel:

public ObservableCollection<string> FooCollection { get { return _FooCollection; } set { if (_FooCollection != value) { _FooCollection = value; RaisePropertyChanged(nameof(FooCollection)); } } } private ObservableCollection<string> _FooCollection = new ObservableCollection<string>(); public string SelectedComboBoxItem { get { return __SelectedComboBoxItem; } set { if (_SelectedComboBoxItem != value) { _SelectedComboBoxItem = value; RaisePropertyChanged(nameof(SelectedComboBoxItem)); } } } private string _SelectedComboBoxItem = string.Empty;

我看到我的组合框集合已填充,但是当我进行选择时,其他所有组合框都具有相同的值。谁能帮助我了解我做错了什么?非常感谢。
c# wpf combobox
1个回答
0
投票
要使代码正常工作,您需要将SelectedComboBoxItem绑定到DataGrid项目。您的情况是Foo类型

我有一个受Foo类型的对象列表约束的数据网格

将此代码放入Foo

public string SelectedComboBoxItem { get { return __SelectedComboBoxItem; } set { if (_SelectedComboBoxItem != value) { _SelectedComboBoxItem = value; RaisePropertyChanged(nameof(SelectedComboBoxItem)); } } } private string _SelectedComboBoxItem = string.Empty;

并据此更新您的绑定

SelectedItem="{Binding SelectedComboBoxItem, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"

© www.soinside.com 2019 - 2024. All rights reserved.