WPF:如何在XAML中根据另一个文本框的Text属性更改文本框的前景色?

4

只要WPF文本框的Text属性与表单上另一个文本框的Text属性不匹配,我希望将其Foreground属性变为红色。我可以通过代码后台和绑定转换器来实现这一点。但是,有没有仅通过XAML来完成它的方法?(我在想某种触发器)。

1个回答

8
不,你需要代码。该代码可以在转换器中实现:
<TextBox x:Name="_textBox1"/>
<TextBox Foreground="{Binding Text, ElementName=_textBox1, Converter={StaticResource ForegroundConverter}}"/>

或者在视图模型中:

public string FirstText
{
    //get/set omitted
}

public string SecondText
{
    get { return _secondText; }
    set
    {
        if (_secondText != value)
        {
            _secondText = value;
            OnPropertyChanged("SecondText");
            OnPropertyChanged("SecondTextForeground");
        }
    }
}

public Brush SecondTextForeground
{
    get { return FirstText == SecondText ? Brushes.Red : Brushes.Black; }
}

谢谢,ViewModel 代码很有用,我以前从未遇到过这种模式。不过我会使用转换器。 - Dabblernl

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接