У меня есть сетка данных в WPF с первым столбцом в качестве флажка. Теперь я добавил флажок «Выбрать все», который отображается в заголовке столбца, к которому он привязан. Обработчики флажков выбора всех и отдельных строк определяются следующим образом:
private void SelectAllCheckBox_Checked(object sender, RoutedEventArgs e)
{
foreach (BaseDataItem objItem in BaseReleaseList)
{
objItem.Select = true;
}
BaseReleaseDataGridView.Items.Refresh();
}
private void SelectAllCheckBox_Unchecked(object sender, RoutedEventArgs e)
{
foreach (BaseDataItem objItem in BaseReleaseList)
{
objItem.Select = false;
}
BaseReleaseDataGridView.Items.Refresh();
}
private void RowCheckBoxUnchecked(object sender, RoutedEventArgs e)
{
SelectAllCheckBox.IsChecked = false;
}
private void RowCheckBoxChecked(object sender, RoutedEventArgs e)
{
if (AreAllCheckBoxesChecked())
SelectAllCheckBox.IsChecked = true;
else
SelectAllCheckBox.IsChecked = false;
BaseReleaseDataGridView.Items.Refresh();
}
private bool AreAllCheckBoxesChecked()
{
foreach (BaseDataItem objItem in BaseReleaseList)
{
if (!objItem.Select)
return false;
}
return true;
}
Теперь проблема в том, что всякий раз, когда я нажимаю флажок «Выбрать все» или флажок «Строка», управление застревает внутри бесконечного цикла. Причина в том, что всякий раз, когда я устанавливаю, выбираю значение true или false, оно снова запускает событие. Как с этим можно справиться.
RoutedEventArgs.Source
(или что-то подобное), чтобы проверить, была ли строка запускающей событие или заголовок. - person Tarec   schedule 03.06.2014bool
, которые были привязаны к данным кCheckbox
es, наtrue
:foreach (Item item in Items) item.BoolProperty = true;
- person Sheridan   schedule 03.06.2014