在 .NET Framework v4.0 中,是否可以覆盖 WPF 的状态更改RadioButton
?
在下面的 XAML 中,我使用列表框来显示动态数量的项目,其中单个项目被视为“选定项目”。
<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>
单击 RadioButton 时,OnItemSelected 方法将进行一些验证,然后提供一个对话框,通知用户将保存新的“选定项”。
如果出现错误情况,或者用户取消保存,我希望重置/覆盖 RadioButton 状态更改。即我手动更改 IsSelected 属性的值。
通过调试,我看到了以下事件序列。
- 选中单选按钮导致
IsSelected
属性更改值,并NotifyPropertyEvent
触发a IsSelected
读取属性的新值。- 该
OnSelected
方法被调用,产生一个对话框。 - 用户取消操作,我手动调用
IsSelected
每个绑定对象,将值重置回来。这会触发多个NotifyPropertyEvents
. - 永远不会重新读取重置值。