Détermination de Radiobutton vérifié à partir de la zone de groupe dans WPF après MVVM
J'ai une zone de groupe avec certains composants radiobutton. Comment puis-je obtenir à connaître celui qui est cochée? Je suis en utilisant WPF et à la suite de MVVM.
<GroupBox Name="grpbx_pagerange" Header="Print Range">
<Grid >
<RadioButton Name="radbtn_all" Content="All Pages" GroupName="radios_page_range" IsChecked="True" />
<RadioButton x:Name="radbtn_curr" Content="Current Page" GroupName="radios_page_range" />
<RadioButton Name="radbtn_pages" Content="Page Range" GroupName="radios_page_range" />
....
</GroupBox>
Maintenant, d'une façon que je pouvais comprendre a été de lier chaque composant RadioButton est IsChecked
de la Propriété de certains biens dans le ViewModel et puis faire des if..else sorte de logique dans mon ViewModel pour comprendre le radiobutton sélectionné.
Mais Est-il une autre manière élégante?
source d'informationauteur Bhramar
Vous devez vous connecter pour publier un commentaire.
vous pouvez lier
RadioButton.Command
de composants radiobutton à une commande de votre ViewModel et d'envoyer un unique CommandParameter pour identifier le bouton qui a appelé la commande dans commandhandler.dans le gestionnaire de commande vérifier les paramètre pour identifier le composant radiobutton.
Grâce
Vous pouvez créer un
enum
qui contient les valeurs de laRadioButton
objets comme des noms (à peu près) et puis de lier laIsChecked
propriété d'une propriété de type de cetteenum
à l'aide d'unEnumToBoolConverter
.Puis dans votre modèle d'affichage ou de code derrière:
Ajouter le
Converter
:Puis enfin, ajouter les liaisons dans l'INTERFACE utilisateur, le bon
ConverterParameter
:Maintenant, vous pouvez dire qui est en regardant le
Options
variable dans votre modèle d'affichage ou de code derrière. Vous serez également en mesure de définir les bagagesRadioButton
par la définition de laOptions
propriété.Il y a un autre MVVM façon de résoudre ce problème à l'aide de la Propriété IsChecked
Voici le code XAML
Votre modèle sera quelque chose comme ceci
ViewModel va ressembler à quelque chose comme ceci (La logique de sélection)
Donc, si vous définissez le datacontext de la vue de ce dernier. Vous devez être en mesure de l'obtenir pour fonctionner.
Espère que cela aide.
Si vous utilisez Balise de propriété sur les boutons d'options (booléens, les entiers, les chaînes de caractères) comme dans son XAML
Ensuite, vous pouvez utiliser la fonction suivante pour obtenir la valeur sélectionnée (bouton)
où
J'ai eu le même problème et je l'ai résolu en supprimant "GroupName" Propriété de composant Radiobutton.
Veuillez supprimer "GroupName" Bien de tous les boutons radio.
et vérifier