1

我一直在实现一种在我的数据网格中“勾选所有”复选框的方法。

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;
        }
    }

当我使用该方法一次勾选所有复选框时,它工作正常。所有复选框均已勾选。但是,当我尝试“选择无”以取消选中所有内容时,第一个复选框将永远不会改变。蜱呆在那里。

这也以相反的选择顺序发生。

数据行确实保留了预期的真/假值,只是没有在网格上表示。

到底是怎么回事?

[编辑]经过一些进一步的测试,在我“唤醒它”后,该复选框可以正常工作,方法是单击它几次并更改其勾选值。非常非常奇怪。

4

0 回答 0