Справка DataBinding к флажку в WPF - PullRequest
0 голосов
/ 07 июня 2011

У меня есть CheckBox в ListBox. Я установил ListBox ItemsSource в список агентств. Агентство имеет свойство

public class Agency 
{ 
  public bool isSelected { get; set;} 
}
<ListBox> <!-- ItemsSource set in codebehind to List<Agency> -->
    <CheckBox IsChecked="{Binding Path=isSelected, Mode=TwoWay}" />
</ListBox>

У меня есть функция, чтобы проверить все флажки

//SelectAll button

    private void SelectAll_Click(object sender, RoutedEventArgs e)
    {
      List<Agency> list = this.AgencySubListBox.ItemsSource as List<Agency>;
      for (int i = 0; i < list.Count; i++)
      {
        Agency d = list[i];
        d.isSelected = true;
      }
    }

Когда я нажимаю кнопку «Выбрать все», я ожидаю, что все флажки будут отмечены. Но ничего не происходит.

Ответы [ 3 ]

1 голос
/ 07 июня 2011

Вы должны заставить вашу модель реализовать INotifyPropertyChanged и реализовать ее

1 голос
/ 07 июня 2011

Нечему сообщать пользовательскому интерфейсу, что привязка вашего флажка признана недействительной и нуждается в повторной проверке.Поэтому внедрите INotifyPropertyChanged в типе Agency.

1 голос
/ 07 июня 2011

Вы должны реализовать INotifyPropertyChanged для своего класса агентства.Затем в вашем isSelected-Property вызовите PropertyChanged, если значение свойства было изменено. Авто-свойства , как вы использовали в своем примере, не поддерживают INotifiyPropertyChanged, поэтому вы не можете использовать их для своих целей.Если вы работаете с .net, я бы также рекомендовал начинать имена свойств с верхнего регистра.Это широко распространенный стандарт.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...