2011-06-07 74 views
0

我有一个ListBox中的复选框。我将ListBox ItemsSource设置为代理列表。代理有一个属性帮助DataBinding复选框WPF

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; 
     } 
    } 

当我打的全选按钮,我希望复选框全部进行检查。但没有任何反应。

回答

1

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