Comment puis-je mieux gérer WPF boutons radio?
J'ai quelques composants radiobutton dans mon XAML...
<StackPanel>
<RadioButton Name="RadioButton1" GroupName="Buttons" Click="ButtonsChecked" IsChecked="True">One</RadioButton>
<RadioButton Name="RadioButton2" GroupName="Buttons" Click="ButtonsChecked">Two</RadioButton>
<RadioButton Name="RadioButton3" GroupName="Buttons" Click="ButtonsChecked">Three</RadioButton>
</StackPanel>
Et je peux gérer leurs événements de clic dans le code Visual Basic. Cela fonctionne...
Privé Sous ButtonsChecked(ByVal sender as System.Objet, _ ByVal e as System.De Windows.RoutedEventArgs) Sélectionnez Cas CType(expéditeur, RadioButton).Nom Cas "RadioButton1" "Faire quelque chose d'un Quitter Sélectionnez Cas "RadioButton2" "Faire quelque chose à deux Quitter Sélectionnez Cas "RadioButton3" "Faire quelque chose trois Quitter Sélectionnez End Select End Sub
Mais j'aimerais l'améliorer. Ce code ne fonctionne pas...
<StackPanel>
<RadioButton Name="RadioButton1" GroupName="Buttons" Click="ButtonsChecked" Command="one" IsChecked="True">One</RadioButton>
<RadioButton Name="RadioButton2" GroupName="Buttons" Click="ButtonsChecked" Command="two">Two</RadioButton>
<RadioButton Name="RadioButton3" GroupName="Buttons" Click="ButtonsChecked" Command="three">Three</RadioButton>
</StackPanel>
Privé Sous ButtonsChecked(ByVal sender as System.Objet, _ ByVal e as System.De Windows.RoutedEventArgs) Sélectionnez Cas CType(expéditeur, RadioButton).Commande Cas "un" "Faire quelque chose d'un Quitter Sélectionnez Cas de "deux" "Faire quelque chose à deux Quitter Sélectionnez Cas "trois" "Faire quelque chose trois Quitter Sélectionnez End Select End Sub
Dans mon XAML-je obtenir un bleu enchevêtrées souligner dans la Commande= attributs et cette astuce...
'CommandValueSerializer' ValueSerializer impossible de convertir de 'Système.Chaîne'.
Dans mon VB-je obtenir un vert enchevêtrées souligner dans la Sélectionnez Cas ligne et cet avertissement...
Des erreurs d'exécution peuvent se produire lors de la conversion du Système".De Windows.D'entrée.ICommand' à 'String'.
Encore mieux serait d'utiliser Enum type de commandes avec plein Intellisense et les erreurs de compilation plutôt que des erreurs d'exécution, en cas d'erreur de frappe. Comment puis-je améliorer cela?
OriginalL'auteur Zack Peterson | 2008-10-31
Vous devez vous connecter pour publier un commentaire.
Pour les commandes de travail, vous devez configurer des liaisons dans votre xaml ou le code derrière. Ces liaisons de commande doit public de référence statiques, les champs qui ont déjà été déclarés.
Ensuite dans vos boutons de Commande de l'attribut ensuite, vous devrez également référence à ces mêmes commandes.
Je ne suis pas sûr de ce que le problème pourrait être, j'ai juste couru cet échantillon et j'ai été en mesure de sélectionner les boutons de la radio ok.
Si tous les boutons radio sont désactivés, alors j'imagine que les liaisons de commande a échoué, er, lier.
Cela a très bien fonctionné pour moi, merci.
OriginalL'auteur Ian Oakes
Meilleure Solution en utilisant WPF MVVM Modèle de Conception:
Bouton Radio de Contrôle XAML pour Modelview.vb/ModelView.cs :
ViewModel.vb :
On peut utiliser de la même logique que ci-dessus pour voir si vous avez coché une des trois de la Radio
Boutons de savoir. La Première Option, L'Option Deux, La Troisième Option. Mais de vérifier si le Booléen id de jeu de vrai ou faux vous pouvez identifier si le bouton radio est coché ou non.
OriginalL'auteur Sridhar Ganapathy