【发布时间】:2016-08-16 08:59:13
【问题描述】:
我有一个枚举到字符串转换器
public class EnumToStringConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter,
CultureInfo culture)
{
MailSettingsStateEnum enumValue = (MailSettingsStateEnum)value;
// extension method on the enum, to return a string based on enum.
return enumValue.Description();
}
// ConvertBack not relevant here.
}
我很容易在 wpf xaml 中使用它来设置标签的 Content 属性。
<Label Content="{Binding MailSettingState, Converter={StaticResource
EnumConverterString}}"
BorderBrush="{Binding MailSettingState, Converter={StaticResource
EnumConverterBorderBrush}}" />
现在你可以看到,我有另一个属性BorderBrush。我还必须基于相同的枚举进行设置。所以我不得不写另一个转换器EnumConverterBorderBrush
那么有没有一种方法可以让我只有一个转换器,它返回一个具有两个属性的对象,我可以在 xaml 中使用这些属性?我可以创建转换器,很简单,但我不知道如何在 xaml 中使用它。假设转换器返回了一个对象,并且有两个名为 MessageString(字符串类型)的属性,以及另一个 Brush 类型的 BorderBrush,我该如何在 xaml 中使用它?
【问题讨论】:
-
AFAIK 不可能满足您的要求。转换器将返回您想要的任何对象,但输出仍然是一个结果。
-
对我来说听起来有点 hacky,但您可以尝试将
Label的DataContext设置为转换后的对象(您需要为此创建一个类),然后绑定到它们的属性。不过,我只会使用两个单独的转换器。编辑。经过测试和工作。 -
谢谢大家。我才意识到自己的愚蠢。我想要的方式,这是不可能的。所有三个答案都是解决方案,但由于我只能选择一个,因此为其他两个道歉。
标签: wpf ivalueconverter