WPF转换器带有属性与多逆变器?
-
28-09-2019 - |
题
使用MulticonConverter(ImultivalUeconverter)使用转换器(Ivalueconverter)(ivalueconverter)和其他值作为参数(转换参数)与其他值的传递与仅传递多个转换器值之间有什么区别?
解决方案
有两个主要区别。一个是,转换参数不是绑定,也不聆听属性更改,因此,如果值更改,则绑定不会自动刷新。
另一个区别是,转换式参数仪是转换和转换的输入,而多键点中的所有绑定都是转换和转换的输出的输入。例如,如果您要从DateTime转换为字符串,则可能使ConverterParameter为格式字符串,因为这会影响两个方向的转换:
public class DateTimeConverter
: IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
return ((DateTime)value).ToString((string)parameter, null);
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
return DateTime.ParseExact((string)value, (string)parameter, null);
}
}
另一方面,如果您想从两个双打转换为尺寸,那么您需要在转换后返回两个双打:
public class SizeConverter
: IMultiValueConverter
{
public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
{
return new Size((double)values[0], (double)values[1]);
}
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
{
var size = (Size)value;
return new object[] { size.Width, size.Height };
}
}
不隶属于 StackOverflow