个人笔记-WPF-ValueConverter

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 的正确打开方式-腾讯云开发者社区-腾讯云

后续会补充。代码纯手打有错。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值