Je sais que je peux créer un setter qui vérifie si une valeur est NULL et faire quelque chose. Exemple:
<TextBlock>
<TextBlock.Style>
<Style>
<Style.Triggers>
<DataTrigger Binding="{Binding SomeField}" Value="{x:Null}">
<Setter Property="TextBlock.Text" Value="It's NULL Baby!" />
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
Mais comment puis-je vérifier une valeur "non" ... comme dans "NOT NULL" ou "NOT = 3"? Est-ce possible en XAML?
Résultats: Merci pour vos réponses ... Je savais que je pourrais faire un convertisseur de valeur (ce qui signifie que je devrais entrer dans le code, et ce ne serait pas du XAML pur comme je l'espérais). Cependant, cela répond à la question selon laquelle effectivement "non" vous ne pouvez pas le faire en XAML pur. La réponse choisie, cependant, montre probablement la meilleure façon de créer ce type de fonctionnalité. Bonne trouvaille.
la source
Vous pouvez utiliser un IValueConverter pour cela:
Où IsNullConverter est défini ailleurs (et conv est défini pour référencer son espace de noms):
Une solution plus générale serait d'implémenter un IValueConverter qui vérifie l'égalité avec le ConverterParameter, afin que vous puissiez vérifier quoi que ce soit, et pas seulement null.
la source
C'est un peu une triche mais je viens de définir un style par défaut, puis je le remplace en utilisant un DataTrigger si la valeur est nulle ...
la source
Comparez avec nul (comme Michael Noonan l'a dit):
Comparer avec non nul (sans convertisseur):
la source
J'utilise ceci pour activer uniquement un bouton si un élément de liste est sélectionné (c'est-à-dire non nul):
la source
Vous pouvez utiliser la
DataTrigger
classe dans Microsoft.Expression.Interactions.dll fournie avec Expression Blend .Exemple de code:
En utilisant cette méthode, vous pouvez déclencher contre
GreaterThan
etLessThan
aussi. Pour utiliser ce code, vous devez référencer deux DLL:la source
Je viens d'utiliser la logique inverse ici ... mettre mon stackpanel à invisible quand mon comboitem n'est pas peuplé, ça marche plutôt bien!
la source
Arrêtez! Pas de convertisseur! Je ne veux pas "vendre" la bibliothèque de ce type, mais je détestais le fait de faire du convertisseur à chaque fois que je voulais comparer des choses en XAML.
Donc avec cette bibliothèque: https://github.com/Alex141/CalcBinding
vous pouvez le faire [et bien plus encore]:
Tout d'abord, dans la déclaration de windows / userControl:
puis, dans le bloc de texte
La partie magique est la conv: Binding 'MYValue == null' . En fait, vous pouvez définir n'importe quelle condition que vous vouliez [regardez le document].
notez que je ne suis pas fan de tiers. mais cette librairie est gratuite, et peu impactante (il suffit d'ajouter 2 .dll au projet).
la source
Ma solution est dans l'instance DataContext (ou ViewModel si vous utilisez MVVM). J'ajoute une propriété qui renvoie true si la condition Not Null que je veux est remplie.
et liez le DataTrigger à la propriété ci-dessus. Remarque: Dans VB.NET, veillez à utiliser l'opérateur If et PAS la fonction IIf, qui ne fonctionne pas avec les objets Null. Alors le XAML est:
la source
Si vous recherchez une solution qui n'utilise pas IValueConverter, vous pouvez toujours utiliser le mécanisme ci-dessous
la source
Convertisseur:
Contraignant:
la source
Vous pouvez utiliser un convertisseur ou créer une nouvelle propriété dans votre ViewModel comme ça:
et utilisez-le:
la source