WPF : Trigger-Bedingung, wenn der string Nicht leer ist
Ursache, können wir überprüfen, einige control-string-Eigenschaft, die bereits leer wie folgenden code:
<Trigger SourceName="atCaption" Property="Text" Value="{x:Static sys:String.Empty}">
<Setter TargetName="imgBack" Property="Margin" Value="0"/>
<Setter TargetName="atCaption" Property="Margin" Value="0"/>
</Trigger>
dann, wie kann eine Bedingung definieren, die 'nicht leere' Zeichenkette?
<!--unfortunately, can't accept '!=' operator in xaml.-->
<Trigger SourceName="atCaption" Property="Text" Value!="{x:Static sys:String.Empty}">
<Setter TargetName="imgBack" Property="Margin" Value="0"/>
<Setter TargetName="atCaption" Property="Margin" Value="0"/>
</Trigger>
mir helfen.
- ähnliche Frage hier: stackoverflow.com/questions/356194/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Mit einem ValueConverter ist eine Lösung.
Bei der Verwendung von MVVM könntest du überlegen, eine zusätzliche Eigenschaft auf der ViewModel-Klasse, die Sie verbindlich zu, die bestimmt, wie ein Steuerelement angezeigt werden soll.
Wenn ich das MVVM-Weg, dies zu lösen brauche ich auch keinen trigger, ich fügen Sie einfach zusätzliche Eigenschaften im ViewModel binden und die Ansicht Eigenschaften, um diese zusätzlichen Eigenschaften, um die Ansicht manipulieren
Ergänzung zu der Antwort von WPF-es (für mich ist dies eine dauerhafte Lösung, keine schnelle Lösung)
Schnell, um so die Werte gelten für die umgekehrte Bedingung sollte vorgegeben werden, in der element-Deklaration oder der Stil, und verwenden Sie dann den geraden die Gleichheit der Bedingung zum ändern von Werten.
z.B.
Übernehmen, wenn Marge 5 ist, was Sie für leere Zeichenfolge, und 0 ist, was müssen Sie für nicht leere Zeichenkette, dann wird Sie auf 0 eingestellt, standardmäßig als einfache Set-in-Stil, und dann prüfen, für die leere Zeichenkette unter Verwendung der Trigger und setzen Sie 5. Stellen Sie sicher, dass die Standard-Setter (für die 0) wird angezeigt, bevor der Trigger (5) in der Style.
Wenn Sie eine Daten-trigger verwendet es eine verbindliche syntax, so können Sie ein IValueConverter-Klasse zu konvertieren, Eigentum in einen booleschen Wert. Schreiben Sie die Kontrollkästchen, die Sie wollen, statt in code innerhalb einer benutzerdefinierten IValueConverter.