WPF: la Liaison de la Visibilité de la chaîne de contenu
Ok, donc voici mon code XAML:
<TextBlock Text="{Binding Path=InstanceName}"></TextBlock>
Si InstanceName
est null ou une chaîne vide, je veux Visibility="Collapsed"
. Sinon, je veux Visibility="Visible"
. Comment dois-je procéder?
OriginalL'auteur Jonathan Allen | 2010-01-23
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser un ValueConverter:
avec les éléments suivants du code-behind:
que pensez-vous serait le côté fastidieux? pensez-vous définissez à la fois la visibilité et le texte séparément pourrait s'avérer fastidieuse? ou pensez-vous donc de valueconverters en général? une chose que je voudrais changer est la liaison la propriété de visibilité avec relativesource de l'auto avec path=Nom de sorte que vous ne répétez pas les "InstanceName"! autre que cela, je ne vois pas comment cela pourrait s'avérer fastidieuse (vous pouvez toujours écrire votre propre MarkupExtensions ou même un Comportement qui pourrait faire cela, mais je pense qu'il est sur le dessus et une valueconverter serait juste la bonne chose)
OriginalL'auteur Markus Hütter
Si vous êtes à l'intérieur d'une (de Données)Modèle vous pouvez utiliser Déclenche.
Sinon, le MVVM-Modèle ou un ValueConverter va vous aider.
Les deux déclencheurs et ValueConverter sont moins vérifiables.
Aucun d'entre eux "testable", comme le seul vrai test est de vérifier visuellement les résultats pour l'effet désiré.
pouvez-vous me montrer un exemple d'utilisation de la déclenche?
OriginalL'auteur Matthias
Mettant un supplément de propriété dans le viewmodel que vous pouvez lier la Visibilité de l'attribut:
Imo il y a une relation entre les vues et les viewmodels. Si vous avez des points de vue que partagent un certain nombre de fonctionnalité que vous pouvez extraire les pièces communes, et peut-être de les placer dans une commune viewmodel de la superclasse.
Qui n'a pas l'air bon. Je ne suis pas familier avec 'ViewModels", mais avec les classiques de la MVC de multiples points de vue peuvent se lier à la même instance d'un modèle. De cette façon, vous pouvez les modifier dans une Fenêtre et de le voir mis à jour en temps réel dans un autre.
Vous avez raison au sujet de la MVC. Bien que dans MVVM le viewmodel est pas la même chose que le Modèle. En regardant l'abréviation: Model-View-ViewModel, vous avez de la première pièce, le Modèle, c'est notre métier de données. La Vue est exactement ce qu'il dit. Puis le ViewModel est le pont entre les deux. Le viewmodel est "un modèle d'un point de vue", c'est un point de vue spécifique du Modèle adapté pour un affichage spécifique. Oui, vous pouvez avoir plusieurs viewmodel de travail contre le même Modèle. OMI rarement avez-vous un über viewmodel servir de multiples points de vue.
OriginalL'auteur Peter Lillevold
Puis ajouter un DataTrigger pour vérifier la valeur est null et modification de la visibilité à l'aide de Setter.
C'est la méthode simple qui iam utilisant.
OriginalL'auteur Kishore Kumar
Ok, donc, c'est la proximité avec PyBinding:
J'ai besoin de remplacer IsNotNull avec quelque chose qui signifie IsNotNullOrEmpty, mais je suis plus proche.
OriginalL'auteur Jonathan Allen