Вы связываете ItemsSource
в ListBox
, а ListBox
использует VirtualizingStackPanel
в качестве своей ItemsPanel, поэтому все контейнеры ListBoxItem
могут создаваться или не создаваться в любой момент времени.
Поэтому, даже если вы будете искать в дереве визуалов и т. Д., Чтобы снять все флажки, вы не можете быть уверены, что сняли их все.
Я предлагаю вам связать IsChecked
с новым свойством того же класса, который вы определили OperatorNum
(который, судя по вашему вопросу, вероятно, является Employee или аналогичным). Таким образом, все, что вам нужно сделать, чтобы снять флажки CheckBox, это установить IsChecked
в False
в вашем исходном классе.
Также убедитесь, что вы внедрили INotifyPropertyChanged
Пример Xaml
<CheckBox Grid.Column="0"
Name="CheckBoxZone"
Content="{Binding OperatorNum}"
Tag="{Binding TheValue}"
IsChecked="{Binding IsChecked}"/>
Employee
public class Employee : INotifyPropertyChanged
{
private bool m_isChecked;
public bool IsChecked
{
get { return m_isChecked; }
set
{
m_isChecked = value;
OnPropertyChanged("IsChecked");
}
}
// Etc..
public event PropertyChangedEventHandler PropertyChanged;
private void OnPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
}