转换器始终实现IValueConverter。这意味着对Convert 或ConvertBack 的调用会传递一个附加参数。该参数是从 XAML 中提取的。
正如 Hitesh Patel 所建议的,没有什么可以阻止您将多个值放入参数中,只要您有一个分隔符稍后将它们分开,但您不能使用逗号分隔 XAML!
例如
XAML
<TextBlock Text="{Binding Path=ReleaseDate, Mode=OneWay,
Converter={StaticResource MyConverter},
ConverterParameter=Param1|Param2}" />
转换器
public object Convert(object value, Type targetType, object parameter,
System.Globalization.CultureInfo culture)
{
string parameterString = parameter as string;
if (!string.IsNullOrEmpty(parameterString))
{
string[] parameters = parameterString.Split(new char[]{'|'});
// Now do something with the parameters
}
}
注意,我没有检查它是否是管道“|”字符在 XAML 中有效(应该),但如果不是,请选择另一个不冲突的字符。
.Net 的最新版本对于Split 的最简单版本不需要字符数组,因此您可以改用它:
string[] parameters = parameterString.Split('|');
附录:
多年前,eBay 在 url 中使用的一个技巧是用 QQ 分隔 URL 中的数据。文本数据中自然不会出现双 Q。如果您遇到避免编码问题的文本分隔符卡住了,请使用 QQ……这不适用于拆分(它需要单个字符,但很高兴知道):)