当文本框中的文本发生变化并满足特定条件时,我需要设置文本颜色。我可以从代码后面实现这个文本框_文本已更改事件和设置笔刷颜色到所需的颜色。
但我无法使用 xaml wpf 方法来实现这一点。我是 wpf 新手,我不确定当文本框中的文本更改时如何根据特定标准设置文本颜色。
例如:对于给定的文本框,当文本发生变化时,需要确定如果输入文本是数字,则将前景色更改为绿色,否则更改为红色。
期待帮助。先感谢您。
我不确定您的情况是否允许绑定转换器。但这里有一个解决方案,只需要在后面的代码中绑定转换器。
这是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>
这是视图模型和值转换器
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;
}
}
因此解决方案使用数据触发器来实现目标。此处使用绑定转换器的唯一原因是您需要一个地方来确定哪种值应更改 TextBox 的前景。这里当TextBox的值为“1”时,TextBox的前景将为红色。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)