是否可以根据TextBlock文本值设置前景属性? 例如:文本值为Mike,前景属性为黑色,值为Tim,属性值为绿色等。我使用Google搜索,但没有找到任何解决方法。
是否可以根据TextBlock文本值设置前景属性? 例如:文本值为Mike,前景属性为黑色,值为Tim,属性值为绿色等。我使用Google搜索,但没有找到任何解决方法。
<TextBlock Text="{Binding Path=Foo}"
Foreground="{Binding Path=Foo, Converter={StaticResource myConverter}" />
您的转换器可以被定义为下面这样:
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;
}
}
根据投票评论的数量,我正在修改 @danut-enachioiu 的答案,使用 Brushes
来实现解决方案,而不是使用 Colors
,以便返回的值与 WPF 元素属性的类型匹配。
TextBlock.Foreground is 'System.Windows.Media.Brushes'
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;
}
}
new SolidColorBrush(Colors.Red)
,以便正确地绑定字段值。 - Fragment