WPF + MVVM + RadioButton : la Poignée de liaison avec une seule propriété
De cette et cette (et d'autres) des questions sur soi et de nombreux autres documents sur internet, j'ai compris comment faire pour lier un bouton radio VM.
Mais tout de créer de propriété distinct pour chaque valeur possible de bouton radio. Une question (cette) est similaire à mon exigence, mais de la a accepté de répondre suggère d'utiliser des ListBox au lieu de bouton radio.
Pour représenter la personne de genre (le Type de données CHAR, les valeurs Possibles de "M", "F"), trois propriétés doit être créé dans la VM comme PersonGender, IsPersonMale, IsPersonFemale.
Je veux contrôler ce que d'un bien PersonGender.
Puis-je faire cela? Si oui, comment?
Semble intéressant; vais essayer cela. Mais pas encore tout à fait acceptable. Bouton Radio représente la saisie de l'utilisateur et de les afficher comme zone de texte ou une zone de liste déroulante; pas d'action comme le Bouton de Commande. L'aide de la Commande à la poignée de saisie/affichage de la dose n'est pas l'air correct.
De commande sont faites pour MVVM, les contraignant à une Commande de l'INTERFACE utilisateur est ce que vous devriez faire si vous voulez avoir un MVVM conforme app. Jetez un oeil à un tutoriel comme celui-ci: codeproject.com/Articles/238657/How-to-use-Commands-in-WPF
OriginalL'auteur Amit Joshi | 2016-06-13
Vous devez vous connecter pour publier un commentaire.
Vous avez besoin d'un convertisseur.
Le convertisseur
Remplacer
null
(enConvertBack
) avecBinding.DoNothing
si la liaison ne doit pas être appliqué dans ce cas.Il n'y a rien dans le convertisseur qui en fait des liens de ce Genre de type de données. De sorte que vous pouvez la renommer en faire un usage général convertisseur.
OriginalL'auteur user2880486
Utiliser les Commandes (à l'Aide de DelegateCommands ici)
VM:
XAML:
(N'ai pas testé le code, mais c'est l'idée)
OriginalL'auteur nkoniishvt
Votre exigence est possible, mais vous auriez besoin d'un peu plus d'efforts pour le faire fonctionner. La principale raison pour cela est RadioButtonbiens IsChecked est Boolean et plusieurs boutons radio sont des commandes distinctes et n'agit pas comme un. Par exemple, une zone de liste.
Pour votre exigence pour le travail, vous pourriez utiliser un Convertisseur.
Lier la IsChecked de deux composants radiobutton à la PersonGender propriété dans le ViewModel et utiliser un commun convertisseur et passer un paramètre "MASCULIN" pour les bouton radio et des "FEMELLES" pour les femmes bouton radio.
Dans le Convertisseur de vérifier si paramètre et PersonGender sont les mêmes et retour VRAI.
Ie. Si la case à cocher paramètre de commande est de sexe MASCULIN et PersonGender est aussi des HOMMES, puis la case à cocher est activée
Else if case paramètre de commande est une FEMME et PersonGender est de sexe MASCULIN, case à cocher n'est pas activée car, false est retourné.
OriginalL'auteur ViVi
Ce que vous devez faire est d'utiliser IValueConverter, que convertir Bool Char et vice versa.
Exemple True => "M"; False => 'F'
À votre avis il y a deux boutons Radio. Assurez-vous de mettre dans le même nom de groupe.
Ensuite, Vous devez lier votre PersonGender à seulement IsMale bouton radio.
car alors IsFemale bouton radio est coché. le IsMale radio bouton sera désactivée automatiquement en raison même nom de groupe.
OriginalL'auteur Tola Ch.