【问题标题】:WPF RadioButton selected in UI, but seen by code as IsChecked == false在 UI 中选择 WPF RadioButton,但在代码中显示为 IsChecked == false
【发布时间】:2010-01-15 15:35:13
【问题描述】:

我在组框中有一些单选按钮。我随机选择按钮,从视觉的角度来看,一切都完美无缺,而且每次选择新按钮时都会调用事件处理程序。

现在,当值更改时,我有一个带有回调的依赖属性。当我在这个回调过程中读取任何按钮的 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??
    }
}

【问题讨论】:

    标签: wpf radio-button dependencies unchecked


    【解决方案1】:

    单选按钮组存在 Microsoft 错误。 如果您有同一个用户控件的多个实例,其中每个用户控件包含一组单选按钮,则当您在一个实例中更改选择时,它将从所有其他实例中删除选择。

    【讨论】:

    • 仅供参考,这里(stackoverflow.com/a/17287651/968003)是对GroupNames问题的详细解释
    • 我一直在让自己发疯,试图找出这个问题,而这就是一个我从未知道的已知错误。谢谢!
    • 10 年后,我偶然发现了同样的问题,但仍未解决 - 感谢 Microsoft!
    【解决方案2】:

    哼,逻辑没问题!

    我使用了两个不同的 SwitchBox 实例,一个由 XAML 正常创建,并显示按钮的实际状态。然而,它是由依赖属性回调访问的代码创建的第二个(并且保持不变)。因此未选中的单选按钮。

    【讨论】:

      猜你喜欢
      • 2018-08-15
      • 2014-12-27
      • 1970-01-01
      • 2014-02-25
      • 1970-01-01
      • 2011-06-25
      • 2011-06-16
      • 2012-01-07
      • 2019-07-16
      相关资源
      最近更新 更多