使用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 };
    }
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top