单击另一列时,DataGrid中的组合框选择将重置

本文关键字:组合 选择 DataGrid 一列 单击 | 更新日期: 2023-09-27 18:26:48

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

为什么会发生这种情况?我能做些什么来防止这种情况发生?

单击另一列时,DataGrid中的组合框选择将重置

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

  1. 您需要在DataGrid中指定TwoWay模式
  2. 您需要在DataGridComboBoxColumn 中绑定属性SelectedValueBinding

    <DataGridComboBoxColumn x:Name="DropDownComboBox" SelectedValueBinding="{Binding Path=FieldFromData}" Header="SomeName" IsReadOnly="False"/>
    

在代码中定义组合框内容。

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

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

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

<DataGrid ..<properties>..   ItemsSource="{Binding DataCollection,Mode=TwoWay}" />
  <DataGridTemplateColumn Visibility="Visible"  Header="Reason Id"  Width="250">
                        <DataGridTemplateColumn.CellTemplate>
                            <DataTemplate>
                                <StackPanel>
                                    <ComboBox x:Name="" SelectedValue="{Binding TypeId}" SelectedValuePath="TypeId" DisplayMemberPath="Type"  
                                                  ItemsSource="{Binding TypeItems}" ></ComboBox>
                                </StackPanel>
                            </DataTemplate>
                        </DataGridTemplateColumn.CellTemplate>
                    </DataGridTemplateColumn>

检查列DataPropertyName属性。我也有类似的问题。从未设置"类型"。代码被设置了两次,但第二次设置不正确。

错误:

grcLocMill2Code.DataPropertyName="MillCodeId";

grcLocMill2Code.DataPropertyName="MillTypeId";

正确:

grcLocMill2Code.DataPropertyName="MillCodeId";

grcLocMill2Type.DataPropertyName="MillTypeId";