首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过TextBlock文本值设置TextBlock的前景属性?

如何通过TextBlock文本值设置TextBlock的前景属性?
EN

Stack Overflow用户
提问于 2010-11-05 02:16:59
回答 3查看 6.6K关注 0票数 4

是否可以通过TextBlock文本值设置TextBlock的前景属性?例如:文本值是Mike,前景属性是黑色,值是Tim,属性值是绿色,等等。我用google搜索,但我找不到任何解决方案。

EN

回答 3

Stack Overflow用户

发布于 2010-11-05 02:24:30

如果您希望灵活地执行某些智能操作,例如将文本动态映射到颜色等,则可以使用Converter类。我假设文本被设置为绑定到某个东西,你可以绑定到前台相同的东西,但通过自定义转换器:

代码语言:javascript
复制
<TextBlock Text="{Binding Path=Foo}" 
           Foreground="{Binding Path=Foo, Converter={StaticResource myConverter}" />

您的转换器的定义如下所示:

代码语言:javascript
复制
public class ColorConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        string text = (string)value;
        switch (text)
        {
            case "Mike":
                return Colors.Red;
            case "John":
                return Colors.Blue;
            default:
                return Colors.Black;
        }
    }

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        return null;
    }
}

显然,您可以使用更智能的逻辑来处理新值等等,而不是简单的switch语句。

票数 6
EN

Stack Overflow用户

发布于 2010-11-05 02:20:16

您有一个模型视图(实现INotifyPropertyChanged),它将文本作为属性,并将前景颜色作为属性,让文本块将这两个属性绑定到模型视图。color属性可以依赖于text属性。

票数 3
EN

Stack Overflow用户

发布于 2020-01-07 12:15:45

根据投票评论的数量,我修改了@danut-enachioiu的答案,以使用Brushes而不是Colors实现解决方案,以便返回的值将与WPF元素属性的类型相匹配。

代码语言:javascript
复制
TextBlock.Foreground is 'System.Windows.Media.Brushes'

这是修改后的代码..。

代码语言:javascript
复制
public class ColorConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        string text = (string)value;
        switch (text)
        {
            case "Mike":
                return Brushes.Red;
            case "John":
                return Brushes.Blue;
            default:
                return Brushes.Black;
        }
    }

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        return null;
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4099837

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档