| 

.NET C# Java Javascript Exception

2
Hallo Leute,

ich möchte die Textfarbe eines WPF-TextBlocks mittels Binding in Abhängigkeit zum Wert einer lokalen Variable bringen. Wenn die Variable im Codebehind einen Wert hat, dann soll der Text z.B. grau angezeigt werden und wenn die Variable leer also null ist soll der Text z.B. schwarz sein. Ist das mit einem Binding realisierbar? Vermutlich braucht es dazu auch einen Converter.
Kann mir hier jemand weiterhelfen?
Schonmal Danke im Vorraus.
11.02.2013
Silas123 1 1
2 Antworten
0
Hi,
ich würds einfach mit einem DataTrigger versuchen.
<Style TargetType="TextBlock">
<Style.Triggers>
<DataTrigger Binding="{Binding xyz}" Value="False">
<Setter Property="Foreground" Value="Black"/>
</DataTrigger>
<DataTrigger Binding="{Binding xyz}" Value="True">
<Setter Property="Source" Value="Red"/>
</DataTrigger>
</Style.Triggers>
</Style>
11.02.2013
mrmee 745 1 8
mrmee 745 1 8
0
Hallo,

wenn du von Codebehind sprichst, kannst du beim Ändern des Wertes der Variablen direkt auf das Control aus der XAML zugreifen und die Farbe direkt setzen.

Sauberer und wartbarer ist es aber, View und Logik zu trennen. Z.B. mit dem MVVM Pattern, sehr beliebt im XAML- und WPF-Umfeld.

Wenn du MVVM einsetzt hast du aus meiner Sicht zwei Möglichkeiten.

Die aus meiner Sicht saubere ist das Bereitstellen des Wertes in einem bindbaren Property (Stichwort: INotifyPropertyChanged) und die Bindung des Wertes an die Farbe eines Controls. In diesem Szenario benötigst du einen Konverter. Das ist auch kein Hexenwerk. Beispiele dazu gibt es im Netz genügend.

Die zweite Variante wäre, den Farbwert direkt als bindbares Property vom ViewModel bereitzustellen. Das würde ich aber nur tun, wenn die Farbe essentieller Bestandteil der Model-Logik ist. Wie z.B. bei der Farbe eines Autos oder der Farbe von Legosteinen.
Ist die Farbe jedoch nur eine Interpretation der Werte in der View, würde ich von der letzten Lösung abraten. Denn dadurch würden Zuständigkeiten vermischt werden. Und das führt unweigerlich zu schlecht wartbaren und wiederverwendbaren Code. Eine zweite View könnte so z.B. nicht abhängig von den Werten abweichende Farben darstellen.
11.02.2013
Andreas Richter 1,7k 1 2 8

Stelle deine .net-Frage jetzt!
TOP TECHNOLOGIES CONSULTING GmbH