WPF-Konverter-update in Echtzeit Hintergrundfarbe der textbox auf text ändern

Habe ich zwei Textfelder für Vorname und Nachname des Benutzers und die ich erstellt habe, einen Konverter-ändern Sie die Hintergrundfarbe der textbox, wenn der text entspricht einer bestimmten Zeichenfolge. Das problem, das ich habe ist, dass das Textfeld nur zu aktualisieren, die zur Laufzeit und wird nicht aktualisiert, wenn ich den text der textbox.

XAML:

<TextBox x:Name="forenameTextBox" Grid.Column="1" HorizontalAlignment="Left" Height="23" Margin="3" Grid.Row="1" 
                 Background="{Binding Staff,Converter ={StaticResource StaffNameToBackgroundColourConverter1}}"  
                 Text="{Binding Staff.Forename, Mode=TwoWay, NotifyOnValidationError=true, ValidatesOnExceptions=true}" VerticalAlignment="Center" Width="120"/>
<Label  Content="Surname:" Grid.Column="0" HorizontalAlignment="Left" Margin="3" Grid.Row="2" VerticalAlignment="Center"/>
<TextBox x:Name="surnameTextBox" Grid.Column="1" HorizontalAlignment="Left" Height="23" Margin="3" Grid.Row="2"
                 Background="{Binding Staff,Converter={StaticResource StaffNameToBackgroundColourConverter1}}"  
                 Text="{Binding Staff.Surname, Mode=TwoWay, NotifyOnValidationError=true, ValidatesOnExceptions=true}" VerticalAlignment="Center" Width="120"/>

Converter code:

public class StaffNameToBackgroundColourConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        var staff  = (Staff) value;
        if (staff.Forename == "Donald" && staff.Surname == "Duck")
        {
            return "Yellow";
        }
        else
        {
            return "White";
        }
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        return value;
    }
}

Richtigen text input:

WPF-Konverter-update in Echtzeit Hintergrundfarbe der textbox auf text ändern

Falsche text - Eingabe- keine änderung:

WPF-Konverter-update in Echtzeit Hintergrundfarbe der textbox auf text ändern

  • Dein problem kommt von der Tatsache, dass Staff ist nicht die Benachrichtigung zu aktualisieren. Staff.Forename und Staff.Surname aktualisieren, aber das bedeutet nicht automatisch, dass Staff updates. Wenn Sie einen Haltepunkt in Ihrem Konverter, ich denke, Sie werden sehen, dass es nie erreicht, wenn Sie mit der Eingabe beginnen in Ihren Textboxen. Dein Konverter ist in Ordnung, das Problem liegt in den Daten, auf die Sie Ihre Textfelder sind gebunden.
InformationsquelleAutor NigelMassey | 2013-09-12
Schreibe einen Kommentar