Bind
Ihre TextBox
‚s Background
auf eine string
Eigenschaft, wir nennen es Word
Dann ein ValueConverter
verwenden, um die Word
zu einem Color
zu konvertieren, wollen wir es WordColorConverter
nennen (was eine Klasse ist die Umsetzung IValueConverter
)
Ihr xaml würde so aussehen, vorausgesetzt, es ist in einem Window
und Sie platzieren die WordColorConverter
in Ihrem local
Namensraum
<Window.Resources>
<local:WordColorConverter x:Key="WordColorConverter"/>
</Window.Resources>
<Grid>
<TextBox Text="{Binding Word}",
Background="{Binding Word, Converter={StaticResource WordColorConverter}}"/><</
</Grid>
Und Ihre WordColorConverter Klasse würde wie folgt aussehen ...
class WordColorConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
string word = (string)value;
if (word.Equals("correct word"))
{
return new SolidColorBrush(Colors.Green);
}
else
{
return new SolidColorBrush(Colors.Red);
}
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
EDIT: Sie könnten versuchen, diese für MultiBinding
<TextBox Text="{Binding InputWord, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}">
<TextBox.Background>
<MultiBinding Converter="{StaticResource WordColorConverter}">
<Binding Path="InputWord" />
<Binding Path="CorrectWord" />
</MultiBinding>
</TextBox.Background>
</TextBox>
public class WordColorConverter : IMultiValueConverter
{
public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
{
string inputWord = (string)values[0];
string correctWord = (string)values[1];
if (inputWord.Equals(correctWord))
{
return new SolidColorBrush(Colors.Green);
}
else
{
return new SolidColorBrush(Colors.Red);
}
}
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
in Style-Trigger ändern. –