Non sono sicuro se un convertitore di binding è consentito nella vostra situazione. Ma ecco una soluzione che ha bisogno solo di un convertitore di binding nel tuo codice.
Ecco il codice in XAML
<Grid.Resources>
<local:ValueConverter x:Key="ValueConverter"></local:ValueConverter>
</Grid.Resources>
<TextBox Text="{Binding Text,UpdateSourceTrigger=PropertyChanged}">
<TextBox.Style>
<Style>
<Style.Triggers>
<DataTrigger Binding="{Binding Path=Text,Converter={StaticResource ValueConverter}}" Value="True">
<Setter Property="TextBox.Foreground" Value="Red"></Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</TextBox.Style>
</TextBox>
Ecco il modello di vista e il convertitore di valori
public class ViewModel : INotifyPropertyChanged
{
private string _text;
public string Text
{
get
{
return this._text;
}
set
{
this._text = value;
if (null != PropertyChanged)
{
this.PropertyChanged(this, new PropertyChangedEventArgs("Text"));
}
}
}
public event PropertyChangedEventHandler PropertyChanged;
}
public class ValueConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (null != value)
{
if (value.ToString() == "1")
return true;
}
return false;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return null;
}
}
Quindi la soluzione utilizza il grilletto di dati al raggiungimento dell'obiettivo. L'unica ragione per utilizzare il convertitore di binding qui è che è necessario un punto per determinare quale tipo di valore dovrebbe modificare il foreground del TextBox. Qui il primo piano di TextBox sarà rosso quando il valore del TextBox è "1".
L'ho implementato e funziona perfettamente. Grazie mille per l'aiuto :) –
@AarohiS È un piacere. Potresti contrassegnare il mio post come la risposta alla tua domanda? Grazie mille. :) – Colin