【问题标题】:UWP XAML RadioButton IsChecked not workingUWP XAML RadioButton IsChecked 不起作用
【发布时间】:2016-12-30 18:10:30
【问题描述】:

这是我的 XAML,显示了第一个被选中的单选按钮,但是当表单显示时,没有被选中。

当我点击表单时,单选按钮的行为与预期一样。

<StackPanel Margin="20,0" Orientation="Horizontal">
    <TextBlock Margin="0,0,10,0" VerticalAlignment="Center" Text="Search with:" />
    <RadioButton x:Name="rdoDates" Content="Dates" IsChecked="True" />
    <RadioButton x:Name="rdoTags" Content="Tags" IsChecked="False" />
    <RadioButton x:Name="rdoBoth" Content="Both" IsChecked="False" />
</StackPanel>

更新 据我了解,如果您的单选按钮位于包含元素内,例如堆栈面板或您不需要 GroupName 的任何东西,并且将 IsChecked=True 添加到其中一个元素中,那么我没有使用组名。一切正常,直到您稍后在页面流中添加第二组单选按钮,其中有一个项目 IsChecked=True。 IsChecked 属性应用于第二组单选按钮,而第一组未选中。

一旦我为每组单选按钮应用了 GroupName,每个组都会遵守 IsChecked。

【问题讨论】:

  • 你确定你没有任何可以搞砸的代码吗?当我使用您的 xaml 启动示例应用程序时,我无法重现它 - 第一个按钮已按预期检查。
  • 请提供更多信息,因为如果我将此 sn-p 复制/粘贴到一个干净的项目中,它会很好。

标签: xaml radio-button uwp uwp-xaml


【解决方案1】:

我在 UWP 中遇到了同样的问题,使用 GroupName 解决了它!我还使用 x:Bind 进行调试,但没有帮助。

<StackPanel Orientation="Vertical">
                    <RadioButton x:Uid="radioButtonOriginalMap"
                                 Tag="OriginalMap"
                                 GroupName="Map"
                                 IsChecked="{x:Bind Vm.IsRadarOriginalMapChecked, Mode=TwoWay}"/>
                    <RadioButton x:Uid="radioButtonBingMap"
                                 GroupName="Map"
                                 Tag="BingMap"
                                 IsChecked="{x:Bind Vm.IsRadarBingMapChecked, Mode=TwoWay}"/>
</StackPanel>

【讨论】:

  • 完美!轻松修复添加 GroupName!
【解决方案2】:

我也遇到过类似的问题。我不完全知道为什么会这样。但是为了确保每次都检查单选按钮,我在页面的构造器中从后面的代码中进行了检查。

【讨论】:

    【解决方案3】:

    派对迟到了,但帮助我的是在整个 (!) xaml 中设置唯一的 x:NameGroupName,包括单独文件中的所有控件。也许是太严格了,但是我在不同的xamls中有两个控件,里面有相同的名称,一旦我修改了其中一个,后来加载的也可以了。

    HTH

    【讨论】:

      猜你喜欢
      • 2017-08-20
      • 2016-06-14
      • 2011-08-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-07
      • 2019-12-16
      • 1970-01-01
      相关资源
      最近更新 更多