Daten Trigger mit Konverter funktioniert nicht
Ich versuche zu aktualisieren, die Farbe der textblock, der je nach Wert. Scheint einfach, aber funktioniert nicht.
Hier ist der xaml textblock.
<TextBlock
Grid.Column="1"
Grid.Row="1"
Text="{Binding Path=GL, StringFormat={}{0:N0}}"
HorizontalAlignment="Left"
FontFamily="Verdana"
Foreground="Tomato"
FontWeight="Bold"
VerticalAlignment="Center"
Margin="5,2,5,0"
FontSize="18"
>
<TextBlock.Resources>
<converters:ColorConverter x:Key="CoConverter"></converters:ColorConverter>
</TextBlock.Resources>
<TextBlock.Style>
<Style>
<Style.Triggers>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource Self}, Path=Text, Converter={StaticResource ResourceKey=CoConverter}}" Value="true">
<Setter Property="TextBlock.Foreground" Value="LimeGreen" />
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
Hier der Konverter
public class ColorConverter : MarkupExtension, IValueConverter
{
#region IValueConverter Members
public object Convert(object value,
Type targetType,
object parameter,
System.Globalization.CultureInfo culture)
{
if (value == null)
return false;
if (value.ToString().Length == 0)
return false;
if (System.Convert.ToDouble(value) >= 0)
return true;
return false;
}
public override object ProvideValue(IServiceProvider serviceProvider)
{
return this;
}
}
Der Konverter sieht gut aus, aber der trigger ist nicht anzuwenden für aus irgendeinem Grund.
Was haben Sie versucht? haben Sie einen Haltepunkt festlegen und sah, dass Sie erreichen den Wandler aus dem XAML?
Ja, der Konverter feuert
Was den text des textblock-und was Wert ist umgestimmt, indem Sie Ihre Software?
text ist doppelt-Nummer und, ist derselbe, der recd. durch den Konverter. Der Konverter gibt true oder false zurück, abhängig vom Wert, der größer als 0 ist oder nicht. Während des Debuggens der Konverter sieht gut aus.
Ja, der Konverter feuert
Was den text des textblock-und was Wert ist umgestimmt, indem Sie Ihre Software?
text ist doppelt-Nummer und, ist derselbe, der recd. durch den Konverter. Der Konverter gibt true oder false zurück, abhängig vom Wert, der größer als 0 ist oder nicht. Während des Debuggens der Konverter sieht gut aus.
InformationsquelleAutor Rauld | 2011-10-11
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie die Foreground-Eigenschaft in Ihrem Stil zu ändern, sondern dynamisch zur Laufzeit.
Nein, ich habe Prüfungen vor. if (value == null) return false; if (Wert.ToString().Länge == 0) return false;
Aber wenn der text-string sagen "Test" in diesem Fall ist es umgehen, Ihre zwei Bedingungen, und es wird nicht konvertiert double-Wert!!
Höchst unwahrscheinlich, der text gebunden ist, die den Typ "double". Es gibt keine Erste-chance-Ausnahmen oder etwas komisch in der Ausgabe-Fenster.
Bitte siehe meine Antwort, jetzt sollte es funktionieren. Sie müssen die Foreground-Eigenschaft in Ihrem Stil-setter.
InformationsquelleAutor Rohit Vats
Sieht aus wie du ' re fehlt StaticResource in Ihrem geschweiften Klammern bei der Angabe der Konverter:
InformationsquelleAutor Chris Mantle
Wenn Sie versuchen, zu ändern Eigenschaftswert dynamisch, dann entsprechende Eigenschaft gehalten werden muss, nur in Setter tag.
Aber nicht in beiden TextBlock-und Setter - tag. Um genau zu sein für dein Beispiel entfernen Foreground-Eigenschaft innerhalb des TextBlock-tag wie in meinem code.
InformationsquelleAutor S.Pradeep