DataGridComboBoxColumn 不是 updating/storing 数据

DataGridComboBoxColumn not updating/storing data

因此,我正在尝试实现 ComboBoxColumn,但它不会像我编辑其他元素时那样保存数据。 我可以在 运行 期间选择组合框内的元素,但它没有被保存。即使对其他行进行排序也会使 ComboBox 再次变空。

XAML:

...

<DataGridComboBoxColumn x:Name="ColSID" Header="Guild"
                        SelectedValueBinding="{ Binding Guilds, Mode=TwoWay }"
                        ItemsSource="{Binding Guilds}"
                        SelectedValuePath="SID"
                        DisplayMemberPath="Name" 
                        CanUserSort="False" />
...

这里是公会 class:

public class Guild
{
    public string SID { get; set; }
    public string Name { get; set; }
}

初始化通过:

Guilds = new List<Guild>();
Guilds.Add(new Guild { SID="1", Name="Test Server x1" });
Guilds.Add(new Guild { SID="2", Name="Test Server x2" });
ColSID.ItemsSource = Guilds;

一旦更改单元格,DataTable 就会存储到 JSON 文件中:

DataTable dt = ((DataView)senderDataGrid.ItemsSource).ToTable();
using (StreamWriter file = File.CreateText(filename))
{
    JsonSerializer serializer = new JsonSerializer();
    serializer.Serialize(file, dt);
}

只要 DataTable,即 senderDataGridItemsSource,有一个名为 "Guilds" 的列接受 string,您的绑定应该可以工作值:

SelectedValueBinding="{Binding Guilds, Mode=TwoWay}"

选中的SID会存储在SelectedValueBinding指定的列中,当然前提是DataTable中确实有这样的列。

如果它不起作用,您应该将 "Guilds" 更改为 DataTable 中列的实际名称或添加该列。