3 Stimmen

Einfacher WPF IValueConverter und DataTrigger funktionieren nicht zusammen

Ich habe Schwierigkeiten bei der Verwendung eines Wertkonverters mit einem Daten-Trigger. In einigen meiner Codes scheint es, als würde der DataTrigger Path auf das Wurzelelement angewendet, anstatt auf das Element, auf das der Stil angewendet wird.

Ich habe einen einfachen Testfall erstellt und verstehe sein Verhalten nicht. Ich erwarte, dass die Schaltfläche je nachdem, welcher Wert dem Konverter des DataTrigger zugeführt wird, rot oder blau wird, aber die Schaltfläche wird überhaupt nicht beeinflusst!

                <Style.Triggers>
                    <DataTrigger
                        Binding="{Binding Path=ToolTip, Converter={StaticResource SimpleConverter}}"
                        Value="Button ToolTip">
                        <Setter Property="Background" Value="Red" />
                    </DataTrigger>
                    <DataTrigger
                        Binding="{Binding Path=ToolTip, Converter={StaticResource SimpleConverter}}"
                        Value="Benutzersteuerung ToolTip">
                        <Setter Property="Background" Value="Blau" />
                    </DataTrigger>
                </Style.Triggers>

Und ein einfacher Konverter:

Klasse SimpleConverter: IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        return Wert;
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        throw new InvalidOperationException("SimpleConverter ist ein OneWay-Konverter.");
    }
}

Warum wird Convert nicht aufgerufen? Warum wird die Schaltfläche nicht rot oder blau?

8voto

sourcenouveau Punkte 27697

Ich habe die Antwort in einer anderen StackOverflow-Frage gefunden: Was ist falsch an meinem Datentrigger-Binding?

Die Antwort besteht darin, RelativeSource={RelativeSource Self} zur Bindung hinzuzufügen:

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X