WPF convertisseur de mise à jour en temps réel de la couleur de fond de la zone de texte sur le changement de texte

J'ai deux zones de texte pour le prénom et le nom d'un utilisateur et j'ai créé un convertisseur pour changer la couleur de fond de la zone de texte lorsque le texte est égal à une chaîne spécifique. Le problème que j'ai est que la zone de texte n'est mis à jour au moment de l'exécution et ne met pas à jour lorsque je modifie le texte de la 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"/>

Convertisseur de 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;
    }
}

Corriger la saisie de texte:

WPF convertisseur de mise à jour en temps réel de la couleur de fond de la zone de texte sur le changement de texte

Mal saisie de texte - pas de changement:

WPF convertisseur de mise à jour en temps réel de la couleur de fond de la zone de texte sur le changement de texte

Votre problème vient du fait que Staff n'est pas notifié d'une mise à jour. Staff.Forename et Staff.Surname de la mise à jour, mais cela ne signifie pas automatiquement que Staff mises à jour. Si vous placez un point d'arrêt dans votre convertisseur, je pense que vous verrez qu'il n'est jamais atteint lorsque vous commencez à taper dans vos zones de texte. Votre convertisseur est très bien, le problème est dans les données pour lesquelles vos zones de texte sont liés.

OriginalL'auteur NigelMassey | 2013-09-12