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
,即 senderDataGrid
的 ItemsSource
,有一个名为 "Guilds" 的列接受 string
,您的绑定应该可以工作值:
SelectedValueBinding="{Binding Guilds, Mode=TwoWay}"
选中的SID
会存储在SelectedValueBinding
指定的列中,当然前提是DataTable
中确实有这样的列。
如果它不起作用,您应该将 "Guilds" 更改为 DataTable
中列的实际名称或添加该列。
因此,我正在尝试实现 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
,即 senderDataGrid
的 ItemsSource
,有一个名为 "Guilds" 的列接受 string
,您的绑定应该可以工作值:
SelectedValueBinding="{Binding Guilds, Mode=TwoWay}"
选中的SID
会存储在SelectedValueBinding
指定的列中,当然前提是DataTable
中确实有这样的列。
如果它不起作用,您应该将 "Guilds" 更改为 DataTable
中列的实际名称或添加该列。