单击另一列时,DataGrid中的ComboBox选择将重置

时间:2014-10-16 10:59:49

标签: c# wpf datagrid combobox

我有一个包含两列的DataGrid。一个是DataGridTextColumn,另一个是DataGridComboBoxColumn。两者都绑定到属性并且是可编辑的。因此,当我更改ComboBox的选择然后单击某个空格时,单元格会显示正确的选择。但是,如果我单击旁边的TextColumn,ComboBox将退出编辑模式并将选择重置为之前选择的内容。

为什么会发生这种情况,我该怎么做才能防止这种情况发生?

3 个答案:

答案 0 :(得分:0)

由于您尚未发布您的代码,我正在假设您的问题是什么。

  1. 您需要在TwoWay
  2. 中指定DataGrid模式
  3. 您需要在SelectedValueBinding

    中绑定媒体资源DataGridComboBoxColumn
    <DataGridComboBoxColumn x:Name="DropDownComboBox" SelectedValueBinding="{Binding Path=FieldFromData}" Header="SomeName" IsReadOnly="False"/>
    
  4. 在代码中定义组合框内容。

     DropDownComboBox.ItemsSource = Enum.GetValues(typeof(ValuesPossible));
    

    如果您没有将Binding设置为您正在显示的数据集中的属性,则它只是一个下拉列表,不会在任何地方更改数据的值。上面的示例使用可以选择的值获取并填充组合框,并选择FieldFromData的数据集中包含的内容。

    您还需要以双向模式绑定DataGrid,以允许所选值更改字段。

    <DataGrid ..<properties>..   ItemsSource="{Binding DataCollection,Mode=TwoWay}" />
    

答案 1 :(得分:0)

javascript

答案 2 :(得分:0)

检查列DataPropertyName属性。 我有一个类似的问题。 “类型”永远不会被设定。代码设置了两次,但第二次错误设置。

不正确:

grcLocMill2Code.DataPropertyName =“MillCodeId”;

grcLocMill2Code.DataPropertyName =“MillTypeId”;

正确:

grcLocMill2Code.DataPropertyName =“MillCodeId”;

grcLocMill2Type.DataPropertyName =“MillTypeId”;