在WPF中帮助DataBinding到Checkbox

时间:2011-06-07 16:02:34

标签: wpf data-binding

我在ListBox中有一个CheckBox。我将ListBox ItemsSource设置为Agency of List。代理商有财产

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 个答案:

答案 0 :(得分:1)

您必须为您的代理商级实施INotifyPropertyChanged。 然后在您的isSelected-Property中,如果已更改属性的值,则调用PropertyChanged。您在示例中使用的Auto-properties不支持INotifiyPropertyChanged,因此您无法将它们用于您的目的。 如果您使用.net,我还建议使用大写字母启动属性名称。这是广为接受的标准。

答案 1 :(得分:1)

您应该使模型实现INotifyPropertyChanged并实现它

答案 2 :(得分:1)

没有什么可以告诉用户界面你的复选框绑定已经失效,并且需要重新检查。因此,请在Agency类型上实施INotifyPropertyChanged