.NET Framework v4.0에서는 WPF RadioButton
의 상태 변경을 재정의 할 수 있습니까?WPF RadioButton - 재정의 상태 변경
아래의 XAML에서는 ListBox를 사용하여 하나의 항목이 "Selected Item"으로 간주되는 동적 항목 수를 표시합니다. RadioButton에를 클릭하면
<ListBox Height="Auto"
Name="listBoxItems"
ItemsSource="{Binding Mode=OneWay, Path=Items}"
SelectedItem="{Binding Path=UserSelectedItem}">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<RadioButton GroupName="SameGroup" Checked="OnItemSelected" IsChecked="{Binding Mode=TwoWay, Path=IsSelected}" CommandParameter="{Binding}"/>
<TextBlock Text="{Binding Mode=OneTime, Converter={StaticResource itemDescriptionConverter}}"/>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
는 OnItemSelected 방법은 몇 가지 유효성 검사를 수행 한 다음 새 "선택한 항목"저장 될 사용자를 알리는 대화 상자를 제공합니다.
오류가 발생하거나 저장을 취소하는 사용자의 경우 RadioButton 상태 변경을 재설정/재정의해야합니다. 즉, IsSelected 속성의 값을 수동으로 변경합니다.
다음 디버깅을 통해 다음 이벤트 시퀀스를 볼 수 있습니다.
- 라디오 버튼
IsSelected
특성 값 변경의 원인 판정하고NotifyPropertyEvent
는IsSelected
속성의 신규 값을 판독 - 소성한다.
OnSelected
메서드가 호출되어 대화 상자가 나타납니다.- 사용자가 작업을 취소하고 각 바인딩 된 개체에 수동으로
IsSelected
을 호출하여 값을 다시 설정합니다. 이것은 복수의NotifyPropertyEvents
을 발사합니다. - 재설정 값은 절대로 다시 읽지 않습니다.
라디오 버튼 인 경우 하나만 선택할 수 있으므로 여러 번 재설정되는 이유는 무엇입니까? 이벤트를 시도하지 않고 설정의 대화 상자를 호출하십시오. 그들이 취소하면 단순히 값을 설정하지 마십시오. – Paparazzi