将数据导入DatagridComboBoxColumn不会更新组合列表值

本文关键字:更新 组合 列表 数据 导入 DatagridComboBoxColumn | 更新日期: 2023-09-27 18:03:35

我构建了一个DataGrid,它包含一个自定义的ComboBoxColumn,当我用鼠标选择它时,它会显示并选择适当的字段,但是在ComboBox失去焦点后,它会重置为列表中的第一项。此外,当我从Excel电子表格中导入数据时,ComboBox不会更改以匹配工作表中的值。

注意:我计划重用这个类来为不同的数据创建一系列的combobox。

是什么阻止组合框接受新值?

ComboList类

namespace x.Models
{
  public class ComboList
  {
    public int FieldID {get;set;}
    public string FieldString {get;set;}
  }
}

XAML组合框代码

<DataGridComboBoxColumn Header="Platform Type" x:Name="PlatformTable" SelectedValueBinding="{Binding FieldID}" DisplayMemberPath="FieldString" SelectedValuePath="1" />

代码(背后)

public partial class MainWindow: Window
{
  public ObservableCollection<Models.ComboList> PlatformCombo {get;set;}
  public MainWindow()
  {
    PlatformCombo = new ObservableCollection<Models.ComboList>()
    {
      new Models.ComboList() {FieldID=1,FieldString="Mounted"},
      new Models.ComboList() {FieldID=2,FieldString="Dismounted"}
    };
    PlatformTable.ItemsSource = PlatformCombo;
}

Excel数据示例

Platform Type
1
2

将数据导入DatagridComboBoxColumn不会更新组合列表值

SelectedValueBinding更改为SelectedItemBinding解决了字段不接受新值的部分问题。[链接](DataGridComboBoxColumn不更新模型WPF)

我仍然留下的问题,为什么从Excel导入时,组合框从未更新;每行为空,即使组合框中有合适的数据。

XAML组合框SelectedValueBinding必须设置为DataGrid组合框控件名称,而不是通用组合框FieldID, UpdateSourceTrigger需要设置为LostFocus

SelectedValueBinding="{Binding Platform_Type, Mode=TwoWay, UpdateSourceTrigger=LostFocus}"