나는 다음과 같은 UI 항목이 - 하나 개 확인란 목록과 그 목록에있는 모든 체크 박스 토글 하나 개의 체크 박스 -WPF 체크 박스 목록
public ObservableCollection<SomeEntity> MyProperty
{
get { return _someEntities; }
set
{
if (value == _someEntities)
return;
_someEntities = value;
base.OnPropertyChanged("MyProperty");
}
}
- 여기
<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의 속성입니다 그리고 여기에 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는 모든 항목이 선택/선택 취소되었음을 반영하여 업데이트되지 않습니다.
ListBox가 업데이트되지 않을 수있는 내용이 누락 된 사람이 있습니까?
어떤 생각이든.
'SomeEntity'는'INotifyPropertyChanged'를 올바르게 구현합니다. –
@ H.B. - isChecked는 필드가 아니라 속성 이겠지. – CodeNaked
SomeEntity에 대한 코드를 표시해야합니다. – CodeNaked