我有一个wpf列表框,它实现了一个包含TextBlock的DataTemplate。
<local:BooleanToFontColorConverter x:Key="boolToFontColor" />
<DataTemplate x:Key="ListBox_DataTemplateSpeakStatus">
<Label Width="Auto">
<TextBlock Foreground="{Binding Path=myProperty, Converter={StaticResource boolToFontColor}}" />
</Label>
</DataTemplate>
我的任务是改变“myProperty”,我希望字体的颜色不同。我的转换器看起来像这样:
public class BooleanToFontColorConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter,
CultureInfo culture)
{
if (value is Boolean)
{
return ((bool)value) ? new SolidColorBrush(Colors.Red) : new SolidColorBrush(Colors.Black);
}
return new SolidColorBrush(Colors.Black);
}
public object ConvertBack(object value, Type targetType, object parameter,
CultureInfo culture)
{
throw new NotImplementedException();
}
}
这很有效。更改绑定属性后,字体颜色(前景)将变为红色。
我的问题是:我希望我的字体变为红色,粗体和斜体。我知道这可以通过使用文本块内联来实现,但是可以使用我的转换器完成所有这三件事吗?
感谢所有有回应的想法和见解的人。
答案 0 :(得分:3)
请勿使用转换器,使用DataTrigger
并为属性添加三个Setters
。
(你可以返回多个对象,但是它没有意义,因为所有这些属性只占用一个对象。一个alernative将使用Binding.ConverterParameter
,然后你可以在转换器中返回对于正确属性的正确值,您仍然需要三个绑定,每个绑定具有不同的参数,它的非常丑陋)