c# - DataGridComboBoxColumn 不更新/存储数据
问题描述
所以,我正在尝试实现一个 ComboBoxColumn,但它不像我编辑其他元素时那样保存数据。我可以在运行期间选择 ComboBox 内的元素,但它没有被保存。即使对其他行进行排序也会使 ComboBox 再次为空。
XAML:
...
<DataGridComboBoxColumn x:Name="ColSID" Header="Guild"
SelectedValueBinding="{ Binding Guilds, Mode=TwoWay }"
ItemsSource="{Binding Guilds}"
SelectedValuePath="SID"
DisplayMemberPath="Name"
CanUserSort="False" />
...
这是公会类:
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
如果(即 的ItemsSource
)senderDataGrid
有一个名为“Guilds”的列接受一个string
值,则您的绑定应该可以工作:
SelectedValueBinding="{Binding Guilds, Mode=TwoWay}"
所选择的SID
将存储在指定的SelectedValueBinding
列中,当然前提是确实有这样的列DataTable
。
如果它不起作用,您应该将“Guilds”更改为列中的实际名称DataTable
或添加列。
推荐阅读
- r - '%>%' 没有可见的全局函数定义
- sql - 如何捕获 SQL 警告消息“警告:空值已被聚合或其他 SET 操作消除。” 在探查器中
- mysql - 根据对其他列的查询,从 mysql 表中的特定列中删除重复值
- regex - 如何从右边排除第一个和第二个减号?
- python - 通过键更改其他键来更新Python中的字典
- javascript - 无法与 React Native App 上的按钮或文本输入交互
- amazon-web-services - AWS cloudwatch 警报轮询 API
- java - 如何使用可迭代将元素从 UnorderedList 传输到数组
- firebase - 使用 Golang 进行基于 Firebase 令牌的身份验证。[Golang 的 Admin SDK 中没有必要的方法]
- c++ - 当我们使用斐波那契数列的递归方法调用 fib(6) 时,fib(3) 会被调用多少次?