单击另一列时,DataGrid中的组合框选择将重置
本文关键字:组合 选择 DataGrid 一列 单击 | 更新日期: 2023-09-27 18:26:48
我有一个带有两列的DataGrid。一个是DataGridTextColumn,另一个是数据网格组合框列。两者都绑定到属性并可编辑。因此,当我更改组合框的选择,然后单击某个空白处时,单元格会显示正确的选择。但是,如果我单击旁边的TextColumn,ComboBox将退出编辑模式,并将选择重置为以前选择的内容。
为什么会发生这种情况?我能做些什么来防止这种情况发生?
由于您还没有发布代码,我正在假设您的问题是什么。
- 您需要在
DataGrid
中指定TwoWay
模式 -
您需要在
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";