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"