我有以下UI项目 - 一个复选框列表和一个复选框与切换该列表中的所有复选框 -WPF复选框列表
<DockPanel>
<CheckBox
Name="SelectCheckboxes"
Command="{Binding ToggleCheckBoxes}"
Content="Whatever"/>
</DockPanel>
<DockPanel>
<ListBox Name="MyListBox"
ItemsSource="{Binding Path=MyProperty, Mode=TwoWay}">
<ListBox.ItemTemplate>
<DataTemplate>
<CheckBox Name="MyCheckBox"
Content="{Binding myvalue}"
Tag="{Binding mycode}"
IsChecked="{Binding Path=isChecked, Mode=TwoWay}"/>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</DockPanel>
这里是myProperty属性 -
public ObservableCollection<SomeEntity> MyProperty
{
get { return _someEntities; }
set
{
if (value == _someEntities)
return;
_someEntities = value;
base.OnPropertyChanged("MyProperty");
}
}
这里是一个命令ToggleCheckBoxes -
public ICommand ToggleCheckBoxes
{
get
{
if (_toggleCheckBoxesCommand == null)
{
_toggleCheckBoxesCommand = new RelayCommand(
param => this.toggleCheckBoxes()
);
}
return _toggleCheckBoxesCommand;
}
}
void toggleCheckBoxes()
{
foreach (var i in MyProperty)
{
if (i.isChecked)
i.isChecked = false;
else
i.isChecked = true;
}
}
当我点击该复选框来切换复选框,我可以查看代码中的属性并查看isChecked属性是否已更改,但ListBox不会更新以反映所有项目已选中/未选中。
有没有人看到我丢失的东西可能导致列表框不更新?
任何想法都可能会发生。
'SomeEntity'实现'INotifyPropertyChanged',对吧? –
@ H.B。 - 我打赌isChecked是一个领域,而不是一个财产。 – CodeNaked
您必须显示SomeEntity的代码。 – CodeNaked