2013-04-16 2 views
2

J'ai quatre RadioButtons dans un panneau de grille, mais quand je le fais:Comment obtenir la valeur de la RadioButton vérifiée dans WPF

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

Il dit que:

Error 1 The object 'GroupBox' already has a child and cannot add 'RadioButton'. 'GroupBox' can accept only one child.

Et le dernier trois RadioButtons disent:

The property 'Content' is set more than once.

Quel est le problème avec mon GroupBox? En outre, dans mon code, je veux accéder à la RadioButton qui est cochée (de préférence en tant que int). Comment puis-je faire cela? J'ai essayé de regarder dans Google et j'ai trouvé beaucoup de résultats, mais je ne pouvais pas comprendre aucun d'entre eux.

Répondre

2

GroupBox ne peut contenir que 1 élément. Alors faites qu'un élément de mise en page et puis mettre les RadioButton « s à l'intérieur

D'où ce que vous faisiez l'erreur est aussi dit d'essayer de définir la propriété Content des GroupBox plusieurs fois. Maintenant, vous définissez la Content une fois qui est le StackPanel et cet élément de mise en page peut contenir de nombreux enfants ->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> 

Quant à votre deuxième question, le premier lien dans google pour WPF RadioButton Here a un échantillon décent . Que voulez-vous dire par vous ne les comprenez pas. Si vous ne savez pas ce qu'est un Binding/Converter, vous devriez peut-être regarder ces sujets en premier?

Une façon très grossière à notifier de RadioButton vérifiés de manière non 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)); 
} 

alors dans chacun de vos RadioButton « s en XAML ajouter Checked="RadioButtonChecked"

+0

merci, il m'a vraiment aidé! pouvez-vous me dire comment obtenir qui est vérifié dans le code? – DorZ11

+0

J'ai ajouté un lien vers la dernière partie de ma réponse. http://wpftutorial.net/RadioButton.html est un échantillon assez décent de réaliser ce dont vous avez besoin. – Viv

+0

a ajouté une fonction liée à l'événement Checked de RadioButton. intIndex devrait être une valeur int à condition que le contenu de RadioButton soit réglé en conséquence – Viv

0

Si vous souhaitez de nombreux éléments ou contrôles alors vous devez les mettre dans des conteneurs de mise en page.

  • Grille
  • StackPanel
  • DockPanel
  • WrapPanel
  • Etc .....
Questions connexes