我有以下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