首页 > 其他分享 >关于IMultiValueConverter的使用

关于IMultiValueConverter的使用

时间:2024-02-05 15:56:11浏览次数:30  
标签:unsetValue object tempValues 多值 IMultiValueConverter values 关于 使用

在前端向后端传递数据的过程中,因为涉及多个属性的调用,将数据绑定到CommandParameter,采用了多值转换器进行数据传递。

    class MultiBindingConverter : IMultiValueConverter
    {
        public object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            return values;
        }
    }

但后端接收到的object对象,总是空对象数组。但如果使用values.Clone(),则能正常的接收到数据。查看了ICommandSource.CommandParameter属性,确实是为空的。难道在binding的过程中,对数据进行了处理吗?
顺着这个思路,去看了下源码实现,在MultiBindingExpression的TransferValue方法中发现了原因。多值绑定的过程大致分为如下过程:

  • 向Converter对象传递的值,使用的是_tempValues;
  • 经过Converter转换后的返回结果经过校验后,传递给unsetValue;
  • 然后清空_tempValues;
  • 然后将unsetValue通过ValueChanged事件处理器返回给接收方;

MultiBindingExpression代码
如果直接返回values,会导致_tempValues和unsetValue指向同一个对象,在清空的操作过程中出现问题。所以,使用多值转换器时,要注意传入的values是会被清理的,不要用来存储对象。

标签:unsetValue,object,tempValues,多值,IMultiValueConverter,values,关于,使用
From: https://www.cnblogs.com/GISyunqi/p/18008301

相关文章

  • spingsecurity使用和说明
     1、引入spingsecurity依赖<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-security</artifactId></dependency>启动项目访问http://localhost:8080/login 账号:user密码:控制台系统生成的2、配置自定义......
  • .NET 7 MAUI 使用基于 REST 的 Web 服务过程中本地开发的问题
    .NET7MAUI使用基于REST的Web服务过程中本地开发的问题微软文档:https://learn.microsoft.com/zh-cn/dotnet/maui/data-cloud/rest?view=net-maui-7.0错误代码Java.Security.Cert.CertificateException:'TheremotecertificatewasrejectedbytheprovidedRemoteCert......
  • 实战:使用xmanager等远程工具管理Linux
    5.3.1Linux下常用远程连接工具介绍 5.3.2xmanager使用方法1.xshell使用方法例1:连接一台新的服务器  ......
  • 使用Sentinel实现隔离、限流
    功能对比 SentinelHystrixresilience4j隔离策略信号量隔离(并发线程数限流)线程池隔离/信号量隔离信号量隔离熔断降级策略基于响应时间、异常比率、异常数基于异常比率基于异常比率、响应时间实时统计实现滑动窗口(LeapArray)滑动窗口(基于RxJava)RingBitBuf......
  • RocketMQ_详细配置与使用详解
    为什么要用MQ 应用解耦系统的耦合性越高,容错性就越低。以电商应用为例,用户创建订单后,如果耦合调用库存系统、物流系统、支付系统,任何一个子系统出了故障或者因为升级等原因暂时不可用,都会造成下单操作异常,影响用户使用体验。 使用消息队列解耦合,系统的耦合性就会提高了。......
  • APP在申请敏感权限时,应同步说明权限申请的使用目的,包括但不限于申请权限的名称、服务
    一、概述华为APP应用市场反馈问题:(目前是华为审核特有的问题)APP在申请敏感权限时,应同步说明权限申请的使用目的,包括但不限于申请权限的名称、服务的具体功能、用途;告知方式不限于弹窗、蒙层、浮窗、或者自定义操作系统权限弹框等验证了小米、vivo、oppo、应用宝,只......
  • 使用react-dnd实现表格之间互相拖拽
    /**引用immutability-helper轮子中的update;意为:在不改变原始来源的情况下改变数据副本*/1importReact,{Component}from'react';2import{DndProvider,useDrag,useDrop}from'react-dnd';3importHTML5Backendfrom'react-dnd-html5-backend......
  • 使用with 还是 join
    用分解关联查询的方式查询具有以下优势:多次单表查询,让缓存的效率更高;许多应用程序可以方便地缓存单表查询对应的结果对象。对MYSQL的查询缓存来说,如果关联中的某个表发生了变化,那么就无法使用查询缓存了,而拆分后,如果某个表很少改变,那么基于该表的查询就可以重复利用查询缓存结果......
  • 关于头文件的使用
    关于头文件的使用这里写一下这个东西,毕竟我在使用的时候还是有不少的疑问一、头文件头文件就是在写C++代码的时候,在最开头几行引用的文件,这里比如说:#include<iostream>我们就是引用了一个名称为iostream的头文件这里这个文件为什么没有后缀名呢,这我就不是很清楚了,据......
  • 使用C语言构建一个独立栈协程和共享栈协程的任务调度系统
    使用了标准库头文件<setjmp.h>中的setjmp和longjmp两个函数,构建了一个简单的查询式协作多任务系统,支持独立栈和共享栈两种任务。其中涉及到获取和设置栈的地址操作,因此还需要根据不同平台提供获取和设置栈的地址操作(一般是汇编语言,因为涉及到寄存器)该调度系统仅运行在一个......