データグリッドのチェックボックスを「すべてチェック」する方法を実装しています。
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;
}
}
メソッドを一度使用してすべてのチェックボックスをオンにすると、正常に機能します。すべてのチェックボックスがオンになっています。ただし、「何も選択しない」を選択してすべてのチェックを外そうとすると、最初のチェックボックスが変更されることはありません。ダニはそこにとどまります。
これは、選択の逆の順序でも発生します。
データ行は意図した true/false 値を保持しますが、グリッドに表示されません。
一体何が起こっているのですか?
[編集] さらにテストを重ねた結果、チェックボックスを数回クリックして値を変更して「起動」すると、チェックボックスは適切に機能します。非常に奇妙です。