DataTrigger, wo Wert NICHT null ist?
Ich weiß, dass ich einen setter, der prüft, um zu sehen, ob ein Wert NULL ist und etwas zu tun. Beispiel:
<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>
Aber wie kann ich überprüfen, ob ein "nicht" Wert... wie bei "NICHT NULL" oder "NICHT = 3"? Ist das möglich in XAML?
Ergebnisse: vielen Dank für Eure Antworten... ich wusste, dass ich tun konnte, ein Wert Konverter (was bedeutet, dass ich würde gehen müssen im code, und das wäre nicht Reine XAML als ich mir erhofft hatte). Das ist jedoch die Frage zu beantworten, die effektiv "Nein" können Sie es nicht in reinem XAML-Code. Die Antwort ausgewählt wird, zeigt jedoch, wahrscheinlich der beste Weg, um erstellen diese Art von Funktionalität. Gute zu finden.
InformationsquelleAutor der Frage Timothy Khouri | 2008-12-10
Du musst angemeldet sein, um einen Kommentar abzugeben.
Lief ich in eine ähnliche Einschränkung mit DataTriggers, und es scheint, dass Sie nur warten können, für die Gleichstellung. Die nächste Sache, die ich gesehen habe, die helfen könnten, Sie ist eine Technik, die für andere Arten von vergleichen, die andere als Gleichheit.
In diesem blog-post beschreibt, wie zu tun Vergleiche wie LT, GT, etc in einem DataTrigger.
Diese Einschränkung der DataTrigger kann umgangen werden, in gewissem Maße durch Verwendung eines Konverter-massage die Daten in einen speziellen Wert, Sie können dann verglichen werden, wie dies Robert Macnee Antwort.
InformationsquelleAutor der Antwort J c
Können Sie einen IValueConverter:
Wo IsNullConverter definiert ist, die anderswo (und conv wird eingestellt, um den Verweis auf den namespace):
Einer Allgemeinen Lösung wäre die Umsetzung IValueConverter, der überprüft, ob die Gleichstellung mit der ConverterParameter, so können Sie prüfen, gegen alles, und nicht nur null.
InformationsquelleAutor der Antwort Robert Macnee
Dies ist ein bisschen wie ein cheat aber ich habe gerade einen Standard-Stil und dann überschrieb es mit einem DataTrigger, wenn der Wert null ist...
InformationsquelleAutor der Antwort
Vergleichen mit null (Als Michael Noonan sagte):
Vergleichen mit not null (ohne Konverter):
InformationsquelleAutor der Antwort JoanComasFdz
Verwende ich diese nur aktivieren einer Schaltfläche, wenn ein listview-Element ausgewählt ist (also nicht null):
InformationsquelleAutor der Antwort SteveCav
Können Sie
DataTrigger
Klasse in Microsoft.Expression.Interactions.dlldie mit Expression Blend.Code-Beispiel:
Mit dieser Methode können Sie veranlassen, gegen
GreaterThan
undLessThan
zu.Um diesen code verwenden, sollten Sie auf zwei dll ' s:
InformationsquelleAutor der Antwort yossharel
Habe ich nur verwendet, der inverse-Logik hier...meine Einstellung stackpanel-Steuerelement auf unsichtbar, wenn meine comboitem nicht aufgefüllt, es funktioniert ziemlich gut!
InformationsquelleAutor der Antwort aromore
Stoppen! Kein Konverter! Ich möchte nicht "verkaufen" die Bibliothek von diesem Kerl, aber ich hasste die Tatsache, das zu tun-Konverter, wenn ich wollte, zu vergleichen, der Sachen in XAML.
Also mit dieser Bibliothek : https://github.com/Alex141/CalcBinding
können Sie tun, [und vieles mehr] :
Ersten, die In der Erklärung der windows/userControl :
dann im textblock
Den magic Teil ist die conv:Binding 'MYValue==null". In der Tat, können Sie jede Bedingung, die Sie wollte [Blick auf den doc].
beachten Sie, dass ich nicht bin ein fan von Drittanbietern. aber diese Bibliothek ist Kostenlos, und wenig Einfluss (fügen Sie einfach 2 .dll in das Projekt).
InformationsquelleAutor der Antwort Simon
Meine Lösung ist in der DataContext-Instanz (oder ViewModel-bei Verwendung von MVVM). Ich füge eine Eigenschaft, die true zurückgibt, wenn die not Null-Bedingung, die ich will, ist erfüllt.
binden und den DataTrigger zu der oben genannten Eigenschaft.
Hinweis: In VB.NET werden Sie sicher, dass der Betreiber, Wenn und NICHT die IIf-Funktion, die funktioniert nicht mit Null-Objekten.
Dann wird der XAML-Code ist:
InformationsquelleAutor der Antwort APaglia
Konverter:
Bindung:
InformationsquelleAutor der Antwort abatishchev
Können Sie einen Konverter verwenden, oder erstellen Sie neue Eigenschaft in das ViewModel so:
und Verwendung:
InformationsquelleAutor der Antwort Butsaty
Wenn Sie auf der Suche nach einer Lösung, die nicht IValueConverter, Sie können immer gehen mit unten-Mechanismus
InformationsquelleAutor der Antwort Chaitanya Kadamati