Имам datagrid в 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