How to get the value of the checked radiobutton in wpf

c#, gridpanel, radio-button, wpf

Solution

`GroupBox` can only hold 1 item, hence the error about trying to set the `Content` property of the `GroupBox` multiple times.

So, make that a Layout item and then put the `RadioButton`s inside it. Now, you set the `Content` once, which is the `StackPanel`, and that Layout item can hold many children -> `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>

As for your second question, Christian Mosers WPF Tutorial.net has a decent sample. If you don't understand it, you maybe should look at the topics `Binding` and `Converter`, first.

A very crude way to be notified of `RadioButton` checked in a non MVVM way:

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

Then, in each of your `RadioButton`s in xaml, add `Checked="RadioButtonChecked"`.

Problem

I have four `RadioButtons` in a grid panel, but when I do this: ``` <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> ``` It says that: Error 1 The object 'GroupBox' already has a child and cannot add 'RadioButton'. 'GroupBox' can accept only one child. And the last three `RadioButtons` say: The property 'Content' is set more than once. What's wrong with my `GroupBox`? Furthermore, in my code I want to access the `RadioButton` that is checked (preferably as an `int`). How do I do this? I tried to look in Google and I found a lot of results, but I couldn't understand any of them.

Original source