.net 将文本块的前景色绑定到局部变量

.net 将文本块的前景色绑定到局部变量,.net,wpf,binding,.net,Wpf,Binding,我想将textblock的前景色绑定到局部变量。 如果变量没有值(=null),则前景色应为黑色;如果变量不为null,则前景色应为黑色或其他颜色。 是否可以通过绑定解决此问题?您可以先使用值转换器,然后像这样定义转换器 [ValueConversion (typeof(object), typeof(SolidColorBrush))] public class ObjectToBrushConverter : IValueConverter { public object Conv

我想将textblock的前景色绑定到局部变量。 如果变量没有值(=null),则前景色应为黑色;如果变量不为null,则前景色应为黑色或其他颜色。
是否可以通过绑定解决此问题?

您可以先使用值转换器,然后像这样定义转换器

[ValueConversion (typeof(object), typeof(SolidColorBrush))]
public class ObjectToBrushConverter : IValueConverter
{

    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        if (value == null)
            return new SolidColorBrush(Colors.Black);
        return new SolidColorBrush(Colors.Red);
    }

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}
然后在XAML文件中将转换器定义为资源

    <Window.Resources>
        <local:ObjectToBrushConverter x:Key="ObjectToBrushConverter"/>
    </Window.Resources>

然后绑定到属性并提供转换器

    <TextBox Name="textb" Text="Hello" Foreground="{Binding Path=MyObject,  Converter={StaticResource ResourceKey=ObjectToBrushConverter}}">

查看值转换器上的msdn

当然,假设您在本例中将变量定义为公共属性且类型为Object