如何在wpf中获得选中的单选按钮的值

本文关键字:单选按钮 wpf | 更新日期: 2023-09-27 18:09:20

我在网格面板中有四个RadioButtons,但是当我这样做时:

<GroupBox x:Name="radioButtons">
    <RadioButton Content="1" Height="16" HorizontalAlignment="Left" Margin="10,45,0,0" Name="status1" VerticalAlignment="Top" />
    <RadioButton Content="2" Height="16" HorizontalAlignment="Left" Margin="10,67,0,0" Name="status2" VerticalAlignment="Top" />
    <RadioButton Content="3" Height="16" HorizontalAlignment="Left" Margin="10,89,0,0" Name="status3" VerticalAlignment="Top" />
    <RadioButton Content="4" Height="16" HorizontalAlignment="Left" Margin="10,111,0,0" Name="status4" VerticalAlignment="Top" />
</GroupBox>

上面写着:

错误1对象"GroupBox"已经有一个子对象,不能添加"RadioButton"。"群盒"只能接受一个孩子。

最后三个RadioButtons说:

属性'Content'被设置了不止一次。

我的GroupBox怎么了?此外,在我的代码中,我想访问被检查的RadioButton(最好是作为int)。我该怎么做呢?我试着在谷歌上搜索,发现了很多结果,但我一个也看不懂。

如何在wpf中获得选中的单选按钮的值

GroupBox只能保存1项,因此多次设置GroupBoxContent属性时会出现错误。

因此,将其设置为布局项,然后将 RadioButtons放入其中。现在,您设置一次Content,即StackPanel,并且布局项可以容纳许多子项-> RadioButton s。

<GroupBox x:Name="radioButtons">
  <StackPanel>
    <RadioButton Name="status1"
                  Height="16"
                  Margin="10,45,0,0"
                  HorizontalAlignment="Left"
                  VerticalAlignment="Top"
                  Content="1" />
    <RadioButton Name="status2"
                  Height="16"
                  Margin="10,67,0,0"
                  HorizontalAlignment="Left"
                  VerticalAlignment="Top"
                  Content="2" />
    <RadioButton Name="status3"
                  Height="16"
                  Margin="10,89,0,0"
                  HorizontalAlignment="Left"
                  VerticalAlignment="Top"
                  Content="3" />
    <RadioButton Name="status4"
                  Height="16"
                  Margin="10,111,0,0"
                  HorizontalAlignment="Left"
                  VerticalAlignment="Top"
                  Content="4" />
  </StackPanel>
</GroupBox>

至于你的第二个问题,Christian Mosers WPF Tutorial.net有一个不错的样本。如果你不理解它,你也许应该先看看BindingConverter主题。

以非MVVM方式检查RadioButton时通知的一种非常粗糙的方法:

private void RadioButtonChecked(object sender, RoutedEventArgs e) {
  var radioButton = sender as RadioButton;
  if (radioButton == null)
    return;
  int intIndex = Convert.ToInt32(radioButton.Content.ToString());
  MessageBox.Show(intIndex.ToString(CultureInfo.InvariantCulture));
}

然后,在xaml中的每个RadioButton s中,添加Checked="RadioButtonChecked" .

如果你想要很多元素或控件,那么你必须把它们放在布局容器中。

    网格
  • StackPanel
  • DockPanel
  • WrapPanel
  • 等等…