Combobox在WPF中的Datagrid中选择了项目绑定不起作用

时间:2018-02-16 07:20:04

标签: c# wpf mvvm data-binding datagrid

我在WPF中的数据网格中遇到了一个组合框问题。 我希望组合框上的箭头即使在编辑模式下也不可见。我无法使用DataGridComboBoxColumn实现此行为,否则其工作正常。要修复此外观问题,我必须使用普通的组合框。

 <DataGridTemplateColumn Header="Parameter Group" MinWidth="150" Width="*">
                        <DataGridTemplateColumn.CellTemplate>
                            <DataTemplate>
                                <ComboBox  ItemsSource="{Binding Source={StaticResource GroupList}}"
                                            DisplayMemberPath="ParameterGroupName"
                                           IsSynchronizedWithCurrentItem="True"
                                           SelectedValuePath="ParameterGroupName"
                                           SelectedValue="{Binding Path=ParameterGroup,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"
                                           > 
                                </ComboBox>
                            </DataTemplate>
                        </DataGridTemplateColumn.CellTemplate>
                    </DataGridTemplateColumn>

现在的问题是所选的项目绑定无效。为行选择的任何项目都适用于所有项目。我不确定这里有什么问题。

项目来源是 -

private ObservableCollection<ParameterGroupModel> _parameterGroupList;

        public ObservableCollection<ParameterGroupModel> ParameterGrpList
        {
            get
            {
                return _parameterGroupList;
            }
            set
            {
                _parameterGroupList = value;
                NotifyPropertyChanged("ParameterGrpList");
            }
        }

所选值是模型中的一个简单字符串。 有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

使用CellTemplate,您在运行时“复制”每个单元格中的相同xaml代码,因此具有相同的绑定。因此每个单元格引用相同的数据源和相同的selectedItem对象。

您必须在某处定义一个对象集合,其中每行可以分别绑定其选定的项目,并在每个单元格中专门引用它 (一种可能的解决方案可能是使用带有selectedItemCollection的多绑定和例如行号来确定您的行必须绑定到哪个selectedItemCollection项目)