我一直在实现一种在我的数据网格中“勾选所有”复选框的方法。
public void SelectAllCheckboxes(object sender, RoutedEventArgs e)
{
if (bindSource != null)
{
DataView list = (DataView)bindSource.List;
System.Windows.Controls.Button btn = e.OriginalSource as System.Windows.Controls.Button;
if (btn.Content.ToString() == "Select All")
{
for (int i = 0; i < list.Count; i++)
{
list[i]["Approve?"] = true;
}
}
else
{
for (int i = 0; i < list.Count; i++)
{
list[i]["Approve?"] = false;
}
}
bindSource.DataSource = list;
dataGrid.DataContext = bindSource;
}
}
当我使用该方法一次勾选所有复选框时,它工作正常。所有复选框均已勾选。但是,当我尝试“选择无”以取消选中所有内容时,第一个复选框将永远不会改变。蜱呆在那里。
这也以相反的选择顺序发生。
数据行确实保留了预期的真/假值,只是没有在网格上表示。
到底是怎么回事?
[编辑]经过一些进一步的测试,在我“唤醒它”后,该复选框可以正常工作,方法是单击它几次并更改其勾选值。非常非常奇怪。