L'écriture des instructions conditionnelles dans le code XAML
J'ai cette zone de liste qui se rempli, chaque élément peut être masculin ou féminin selon le "SEXE" de la propriété qui est reliée à la zone de liste. ("M" pour masculin et " F " pour féminin)...
Pour chaque élément que je voudrais afficher soit un homme ou une femme symbole basé sur les éléments de la liste du SEXE de la propriété.
par exemple, si "{Binding SEXE}" équivaut à "M":
<Image Source="../Images/male48.png" Visibility="Visible" />
et si "{Binding SEXE}" équivaut à "F":
<Image Source="../Images/female48.png" Visibility="Visible" />
Exactement comment pourrais-je aller sur l'obtention de ce travail?
Ne pouvez-vous pas lier la Source de l'image des biens et ont de la complexité de votre modèle de vue?
OriginalL'auteur Tiwaz89 | 2012-07-09
Vous devez vous connecter pour publier un commentaire.
Une approche commune pour ce problème est de créer un convertisseur de valeurs, cette fonction convertit la valeur retournée par une liaison à une autre valeur qui se rapporte à la propriété d'un contrôle d'INTERFACE utilisateur.
Vous pouvez créer un convertisseur qui prend le sexe et la convertit en une source de l'image:
De l'utiliser dans votre XAML comme suit:
Aussi, je reçois ce message d'erreur indiquant: Erreur 1 'Pathportal.SexToSourceConverter' n'implémente pas l'interface de membre du Système.De Windows.Les données.IValueConverter.ConvertBack(objet, Système.Type, de l'objet, du Système.De la mondialisation.CultureInfo)'... des idées?
Lors de l'utilisation de MVVM nous n'avons jamais dérangé avec ValueConverters, vous avez déjà la possibilité de convertir la valeur de la VM pourquoi s'embêter avec la catégorie "extra"? Wou vais finalement se retrouver avec des dizaines de convertisseurs ou trop complexes convertisseurs de tenter d'en faire trop, de sorte qu'ils peuvent être ré-utilisés dans légèrement différents contextes
1. Vous êtes en supposant que l'OP est en utilisant MVVM. 2. La machine virtuelle doit savoir quelles images de la vue utilise pour lequel les états, qui permettrait de briser l'encapsulation de la vue.
1. Dans le ConvertBack méthode, vous pourriez revenir de Liaison.Ne rien faire à la place. 2. Ne pensez-vous pas que vous devriez laisser les OP ont un aller à l'apprentissage de la manière d'écrire un convertisseur lui-même?
OriginalL'auteur ColinE
Si quelqu'un est intéressé par la façon dont cela pourrait fonctionner, j'ai fait une solution basée sur ColinE's réponse. Tout d'abord, vous avez à créer une nouvelle classe qui contient les conditions que vous allez à ajouter le code XAML:
Appel de la classe ce que vous voulez (à droite maintenant, il est appelé
MyNiceConverterName
) et de mettre en œuvre laConvert()
méthode avec les conditions que vous souhaitez ajouter le fichier XAML. N'oubliez pas de jeter laobject value
le type que vous utilisez (par exemple,(int)value
si c'est un entier).C'est presque fait! Mais pas encore, d'abord déclarer le convertisseur dans votre XAML comme une ressource. Vous pouvez coller ce code ci-dessous les espaces de noms déclaration:
Vous avez à déclarer l'espace de noms où vous défini la classe (c'est à dire, supprimer
My_Namespace
avec la vôtre") et également les renommerMyNiceConverterName
à votre nom de classe. La clé sera le nom défini pour référence le convertisseur dans le code XAML document, ici j'ai utilisé le même nom de classe, mais vous pouvez changer librement.Enfin, il est temps d'utiliser le convertisseur. Mettre cela et vous avez terminé:
N'oubliez pas de changer
variable_with_value
avec celui que vous souhaitez utiliser dans votre liaison.J'espère que cela aide!
Vous êtes les bienvenus mate!
OriginalL'auteur SRG
Soit utiliser un convertisseur de liaison ou de l'utilisation de deux les déclencheurs.
Pour Siverlight c'est la bonne IValueConverter lien, je ne suis pas sûr si les déclencheurs sont pris en charge.
Je crois que les déclencheurs de travail dans wp7, n'est-ce pas que la façon Caliburn Micro-actions de travail, j'ai peut-être tort.
OriginalL'auteur Danny Varod