我在组框中有一些单选按钮。我随机选择按钮,从视觉角度来看,一切都完美无缺,并且每次选择新按钮时都会调用事件处理程序。
现在,当值更改时,我有一个带有回调的依赖属性。当我在这个回调过程中读取任何按钮的 IsChecked 值时,该值是 False,尽管按钮是在视觉上被选中的(它们同时都是假的,奇怪)。调试器还显示所有未选中的按钮。
呼呼,我对原因没啥想法,经过基本的验证……
<GroupBox>
<StackPanel>
<RadioButton x:Name="btNone"
Content="Disconnected"
IsChecked="True"
Checked="OnSelChecked"/>
<RadioButton x:Name="btManual"
Content="Manual"
Checked="OnSelChecked"/>
</StackPanel>
</GroupBox>
事件处理程序:
private void OnSelChecked(object sender, RoutedEventArgs e) {
if (btManual.IsChecked == true) {
// is called
}
}
依赖属性:
public static readonly DependencyProperty ManualProperty =
DependencyProperty.Register("Manual",
typeof(Position), typeof(SwitchBox),
new FrameworkPropertyMetadata(null,
FrameworkPropertyMetadataOptions.AffectsRender,
new PropertyChangedCallback(OnManualChanged)));
依赖属性回调:
private static void OnManualChanged(DependencyObject sender, DependencyPropertyChangedEventArgs args) {
SwitchBox box = sender as SwitchBox;
if (box.btManual.IsChecked == true) {
// never true, why??
}
}