У меня есть приложение в WPF с помощью DataGrid, который содержит столбец флажки. У меня есть флажок в заголовке, чтобы проверить и снимать все флажки в столбце. Это работает хорошо, но я пытался сделать его неверным после того, как один из флажков в столбце не будет проверен. Я не смог вытащить поведение из кода, который я писал для этой ситуации, которую я хочу. И когда флажок в заголовке не проверяется, все флажки в столбце становятся неконтролированными. < /P>
В то время как флажок в заголовке проверяется и все флажки в столбце проверяются, если пользователь Unchecks One of the Fackbox, флажок в заголовке должен быть не выполнен. Заголовок хорошо работает, чтобы получить поведение проверки и рассеяния всех флажков, содержащихся в столбце. Но использование их также вызывает проблемы, когда один флажок, содержащийся в столбце, не контролируется, потому что я хочу, чтобы флажок в заголовке был неконтролирован в этом случае, который запускает неконтролируемое событие на флажке заголовка, вызывая каждый флажок, содержащийся в столбце, чтобы стать неконтролированным.
Код: Выделить всё
< /code>
код события < /h1>
private void DataGridCheckBox_Checked(object sender, RoutedEventArgs e)
{
UpdateCheckAllIsChecked();
}
private void DataGridCheckBox_Unchecked(object sender, RoutedEventArgs e)
{
UpdateCheckAllIsChecked();
}
private void CheckAll_Checked(object sender, RoutedEventArgs e)
{
UpdateCheckBoxes();
}
private void CheckAll_Unchecked(object sender, RoutedEventArgs e)
{
UpdateCheckBoxes();
}
///
/// Updates the CheckAll checkbox to indicate whether all files are selected.
///
private void UpdateCheckAllIsChecked()
{
if (FilesDataGrid.ItemsSource is List fileDetails)
{
CheckAllIsChecked = fileDetails.All(f => f.IsSelected);
}
}
///
/// Updates the IsSelected property of all files in the DataGrid control to set the checkboxes that
/// represent them.
///
private void UpdateCheckBoxes()
{
if (FilesDataGrid.ItemsSource is List files)
{
foreach (var file in files)
{
file.IsSelected = CheckAllIsChecked;
}
}
}
>
Подробнее здесь: https://stackoverflow.com/questions/795 ... when-a-che