多参数转换器

有谁知道如何在Windows Phone 7应用程序中使用带有多个参数的转换器?

提前致谢。

转换器始终实现IValueConverter 。 这意味着对Convert或ConvertBack的调用会传递一个附加参数。 该参数是从XAML中提取的。

正如Hitesh Patel建议没有什么可以阻止你在参数中放置多个值,只要你有一个分隔符以便稍后将它们分开, 但你不能使用逗号来界定XAML!

例如

XAML

 

变流器

 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 …这不适用于拆分(这需要单个字符,但很高兴知道):)

您始终可以从DependecyObject类派生,并根据需要添加任意数量的DependencyProperties。 例如:

ExampleConverter.cs

 public class ExampleConverter : DependencyObject, IValueConverter { public string Example { get => GetValue(ExampleProperty).ToString(); set => SetValue(ExampleProperty, value); } public static readonly DependencyProperty ExampleProperty = DependencyProperty.Register("Example", typeof(string), typeof(ExampleConverter), new PropertyMetadata(null)); public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { //Do the convert } public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) { throw new NotImplementedException(); } } 

然后在XAML中:

ExampleView.xaml

    ...