多参数转换器
有谁知道如何在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
...