首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在UI中选择了WPF RadioButton,但代码将其视为IsChecked == false

在UI中选择了WPF RadioButton,但代码将其视为IsChecked == false
EN

Stack Overflow用户
提问于 2010-01-15 23:35:14
回答 2查看 5.1K关注 0票数 1

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

现在我有了一个依赖属性,当值发生变化时会有一个回调函数。当我在这个回调过程中读取任何按钮的IsChecked值时,该值为False,尽管该按钮在视觉上是选中的(它们同时都是false,奇怪)。调试器还显示所有未选中的按钮。

胡虎,我不知道原因是什么,在基本核实之后...

代码语言:javascript
复制
<GroupBox>
    <StackPanel>
        <RadioButton x:Name="btNone"
            Content="Disconnected"
            IsChecked="True"
            Checked="OnSelChecked"/>
        <RadioButton x:Name="btManual"
            Content="Manual"
            Checked="OnSelChecked"/>
    </StackPanel>
</GroupBox>

事件处理程序:

代码语言:javascript
复制
private void OnSelChecked(object sender, RoutedEventArgs e) {
    if (btManual.IsChecked == true) {
        // is called
    }
}

依赖属性:

代码语言:javascript
复制
public static readonly DependencyProperty ManualProperty =
            DependencyProperty.Register("Manual",
            typeof(Position), typeof(SwitchBox),
            new FrameworkPropertyMetadata(null,
                FrameworkPropertyMetadataOptions.AffectsRender,
                new PropertyChangedCallback(OnManualChanged)));

依赖属性回调:

代码语言:javascript
复制
private static void OnManualChanged(DependencyObject sender, DependencyPropertyChangedEventArgs args) {
    SwitchBox box = sender as SwitchBox;
    if (box.btManual.IsChecked == true) {
        // never true, why??
    }
}
EN

回答 2

Stack Overflow用户

发布于 2011-10-09 23:25:46

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

票数 4
EN

Stack Overflow用户

发布于 2010-01-16 01:04:49

嗯,逻辑完好无损!

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2072724

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档