繁体   English   中英

是否可以从wpf中的ivalueconverter返回多个值?

[英]Is it possible to return more than one value from an ivalueconverter in wpf?

我有一个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();
    }
}

这可行。 更改绑定属性后,字体颜色(前景)将变为红色。

我的问题是:我希望我的字体更改为红色,加粗和斜体。 我知道这可以通过使用文本块内联来实现,但是是否可以使用我的转换器来完成所有这三件事?

多谢所有有回应的思想和见解的人。

为此,请勿使用转换器,而应使用DataTrigger并为属性添加三个相应的设置Setters

(您可以返回多个对象,但是这将毫无意义,因为所有这些属性都仅包含一个对象。另一种方法是使用Binding.ConverterParameter ,然后可以在其上切换转换器以返回正确的值)。属性,您仍然需要三个绑定,每个绑定都有一个不同的参数,这非常丑陋)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM