IValueConverter:值转换器
继承类实现IValueConverter的两个方法:Convert、ConvertBack
[ValueConversion(typeof(classA),typeof(classB))]
public class classAToclassBConverter: IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
YourOwnStuff();
return classBStuff;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
YourOwnStuff();
return classAStuff;
}
}
IsEnable = "{Binding sth Converter = {StaticResource classAToclassBConverter} ConverterParameter = sth}"
ConverterParameter可以向转换器的Convert方法传递parameter参数。ValueConversion不太确定,我这边有没有都能用。
IMultiConverter:多值转换器,转换器输入的参数数量大于1
[ValueConversion(typeof(classA),typeof(classB))]
public class classAToclassBConverter: IMulitiValueConverter
{
public object Convert(object[] value, Type targetType, object parameter, CultureInfo culture)
{
value[0]...
value[1]...
YourOwnStuff();
return classBStuff;
}
public object[] ConvertBack(object value, Type[] targetType, object parameter, CultureInfo culture)
{
YourOwnStuff();
return classAStuff;
}
}
多值转换器在前端Binding需使用MultiBinding
<MultiBinding Convert = "{StaticResource multiConverter}">
<Binding sth1/>
<Binding sth2/>
<MultiBinding/>
在使用多值转换器时,出现了转换输入参数数据类型为int,导致Convert方法value数组参数,除了第一个参数正常外其余参数都为DependencyProperty.UnsetValue的情况,判断应该是数据传递时进行类型转换出了问题,后续直接传Object类型就没问题了。
详见DependencyProperty.UnsetValue 的正确打开方式-腾讯云开发者社区-腾讯云
后续会补充。代码纯手打有错。