example event c# wpf radio-button gridpanel

c# - event - Cómo obtener el valor del botón de radio marcado en wpf



wpf radio button click event (2)

Si quiere muchos elementos o controles, debe colocarlos en contenedores de diseño.

  • Cuadrícula
  • StackPanel
  • DockPanel
  • WrapPanel
  • Etc .....

Tengo cuatro RadioButtons en un panel de la cuadrícula, pero cuando hago esto:

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

Dice que:

Error 1 El objeto ''GroupBox'' ya tiene un elemento secundario y no puede agregar ''RadioButton''. ''GroupBox'' puede aceptar solo un hijo.

Y los últimos tres RadioButtons dicen:

La propiedad ''Contenido'' está configurada más de una vez.

¿Qué pasa con mi GroupBox ? Además, en mi código quiero acceder al RadioButton que está marcado (preferiblemente como int ). ¿Cómo hago esto? Intenté buscar en Google y encontré muchos resultados, pero no pude entender ninguno de ellos.


GroupBox solo puede contener 1 elemento. Así que haz que sea un elemento de Diseño y luego pon el RadioButton dentro de él

Por lo tanto, lo que estaba haciendo es como dijo el error al intentar establecer la propiedad de Content de GroupBox varias veces. Ahora configura el Content una vez que es el StackPanel y ese elemento de diseño puede contener muchos niños -> 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>

En cuanto a su segunda pregunta, el primer enlace en Google para WPF RadioButton Aquí tiene una muestra decente. ¿Qué quieres decir con que no los entiendes? Si no comprende qué es un Binding / Converter , ¿debería mirar esos temas en primer lugar?

Una manera muy cruda de ser notificado de RadioButton comprobado de una manera que no sea 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)); }

luego, en cada uno de los RadioButton ''s en xaml, agregue Checked="RadioButtonChecked"