5

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'。'GroupBox' 只能接受一个孩子。

最后三个RadioButtons说:

多次设置“内容”属性。

我的怎么了GroupBox?此外,在我的代码中,我想访问RadioButton被检查的(最好是int)。我该怎么做呢?我试图在谷歌中查找,我发现了很多结果,但我无法理解其中任何一个。

4

2 回答 2

5

GroupBox只能容纳 1 个项目,因此尝试设置多次Content属性的错误。GroupBox

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

<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,。

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

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));
}

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

于 2013-04-16T12:03:10.077 回答
0

如果您想要许多元素或控件,则必须将它们放在布局容器中。

  • 网格
  • 堆栈面板
  • 停靠面板
  • 包裹面板
  • ETC.....
于 2013-04-16T12:32:27.530 回答