我在分组框中有一些单选按钮。我随机选择按钮,从视觉的角度来看,所有按钮都能完美地工作,而且每次选择一个新按钮时都会调用事件处理程序。
现在我有了一个依赖属性,当值发生变化时会有一个回调函数。当我在这个回调过程中读取任何按钮的IsChecked值时,该值为False,尽管该按钮在视觉上是选中的(它们同时都是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??
}
}发布于 2011-10-09 23:25:46
单选按钮组存在Microsoft错误。如果具有同一用户控件的多个实例,其中每个用户控件都包含一组单选按钮,则当您在一个实例中更改选择时,它将从所有其他实例中删除所选内容。
发布于 2010-01-16 01:04:49
嗯,逻辑完好无损!
我使用了两个不同的SwitchBox实例,其中一个是由XAML正常创建的,并显示了按钮的实际状态。然而,它是由代码创建的第二个(并且保持不变),由依赖属性回调访问。因此,未选中的单选按钮。
https://stackoverflow.com/questions/2072724
复制相似问题