【问题标题】:Help DataBinding to Checkbox in WPF帮助数据绑定到 WPF 中的复选框
【发布时间】:2011-06-07 16:02:33
【问题描述】:

我在 ListBox 中有一个 CheckBox。我将 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;
      }
    }

当我点击全选按钮时,我希望所有复选框都被选中。但什么也没有发生。

【问题讨论】:

    标签: wpf data-binding


    【解决方案1】:

    你必须为你的代理类实现INotifyPropertyChanged。 然后在您的 isSelected-Property 中,如果属性的值已更改,则调用 PropertyChanged。 Auto-properties 您在示例中使用的不支持 INotifiyPropertyChanged,因此您不能将它们用于您的目的。 如果您使用 .net,我还建议以大写开头的属性名称。这是被广泛接受的标准。

    【讨论】:

      【解决方案2】:

      你应该让你的模型实现INotifyPropertyChanged,并实现它

      【讨论】:

        【解决方案3】:

        没有什么可以告诉 UI 您的复选框绑定已失效,需要重新检查。因此,在您的 Agency 类型上实现 INotifyPropertyChanged

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-09-28
          • 1970-01-01
          • 2010-11-17
          • 1970-01-01
          • 2011-03-16
          • 1970-01-01
          • 2011-10-13
          相关资源
          最近更新 更多