WPF 多值绑定(MultiBinding)详解 📅 发布时间:2026/7/15 0:41:01 👁️ 浏览次数: 1. 是什么MultiBinding 把多个值绑定到一个属性上例如姓名 年龄 → 显示为 “张三 (20 岁)”用户名 密码 → 同时判断登录按钮是否可用宽度 高度 → 计算控件大小2. 核心IMultiValueConverter多值转换器把多个值合成一个值给 UI。3. 示例 1多文本拼接姓名 年龄步骤 1创建多值转换器using System; using System.Globalization; using System.Windows.Data; public class StringJoinConverter : IMultiValueConverter { public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture) { // values[0] 姓名values[1] 年龄 if (values[0] null || values[1] null) return ; return ${values[0]} ({values[1]} 岁); } // 一般不用 public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture) { throw new NotImplementedException(); } }步骤 2UI 绑定MultiBindingxmlTextBlock TextBlock.Text MultiBinding Converter{StaticResource StringJoinConverter} Binding PathUserName / !-- 第1个值 -- Binding PathAge / !-- 第2个值 -- /MultiBinding /TextBlock.Text /TextBlock步骤 3注册转换器xmlWindow.Resources local:StringJoinConverter x:KeyStringJoinConverter/ /Window.Resources4. 示例 2多条件判断用户名 密码都不为空才启用按钮转换器public class LoginEnableConverter : IMultiValueConverter { public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture) { if (values[0] is string user !string.IsNullOrWhiteSpace(user) values[1] is string pwd !string.IsNullOrWhiteSpace(pwd)) { return true; } return false; } public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture) { throw new NotImplementedException(); } }UI 使用xmlButton Content登录 Button.IsEnabled MultiBinding Converter{StaticResource LoginEnableConverter} Binding PathUserName / Binding PathPassword / /MultiBinding /Button.IsEnabled /Button效果用户名、密码都输入内容按钮才可以点击。三、超级完整版 Demo可直接复制运行ViewModelpublic class MainViewModel : ViewModelBase { // 数据绑定 private string _userName; public string UserName { get _userName; set SetProperty(ref _userName, value); } private int _age; public int Age { get _age; set SetProperty(ref _age, value); } // 命令绑定 public ICommand ShowInfoCommand { get; set; } public MainViewModel() { ShowInfoCommand new RelayCommand(() { MessageBox.Show($姓名{UserName}\n年龄{Age}); }); } }UIxmlStackPanel Margin20 TextBox Text{Binding UserName, UpdateSourceTriggerPropertyChanged} Placeholder姓名/ TextBox Text{Binding Age} Margin0 5 Placeholder年龄/ !-- 多值绑定 -- TextBlock FontSize18 Margin0 10 TextBlock.Text MultiBinding Converter{StaticResource StringJoinConverter} Binding PathUserName / Binding PathAge / /MultiBinding /TextBlock.Text /TextBlock !-- 命令绑定 -- Button Content显示信息 Command{Binding ShowInfoCommand} / /StackPanel四、核心总结多值绑定MultiBinding一个属性绑定多个数据源必须配合IMultiValueConverter常用场景文本拼接、多条件判断、组合数据语法结构固定xmlMultiBinding Converter... Binding Path... / Binding Path... / /MultiBinding
直接上代码先看效果!咱们先跑个Demo感受下哈里斯鹰优化LSSVM的威力。准备好你的Matlab,把这段代码扔进去运行 基于哈里斯鹰的LSSVM回归预测HHO-LSSVM 其他优化算法可私信 为了提高最小二乘支持向量机(lssvm)的回归预测准确率,对lssvm中的惩罚参数和核惩罚参数利用哈里斯鹰算法进行优化。 Matlab 代码% 哈里斯鹰参数初始化 pop_size 30; % 种群数量 … 2026/7/15 0:36:57
赶deadline必备 一键生成论文工具 千笔·专业论文写作工具 VS 学术猹 随着人工智能技术的迅猛迭代与普及,AI辅助写作工具已逐步渗透到高校学术写作场景中,成为本科生、研究生完成毕业论文不可或缺的辅助手段。越来越多面临毕业论文压力的学生,开始依赖各类AI工具简化写作流程、提升创作效率。但与此同时… 2026/7/15 0:37:27
计算机毕业设计springboot基于Android的考勤签到系统 基于SpringBoot与Android技术的移动化员工出勤管理平台设计 采用B/S架构的企业智能移动打卡系统研发 计算机毕业设计springboot基于Android的考勤签到系统 (配套有源码 程序 mysql数据库 论文) 本套源码可以在文本联xi,先看具体系统功能演示视频领取,可分享源码参考。移动互联网技术的迅猛发展与智能设备的全面普及,正在深刻改变着… 2026/7/12 7:51:49
上下文工程:Agent的长上下文、记忆管理与Token治理最佳实践 上下文工程为何是Agent的心脏大模型驱动的Agent系统正在重塑软件开发范式。开发者往往聚焦于提示词优化和工具调用链设计,却容易忽视一个更底层的命题:上下文才是决定Agent智能水平的关键变量。Agent每一次决策都依赖于对历史信息的理解和当前状态的感知… 2026/7/15 0:35:11
RAG最大陷阱:文档分片不等于知识库,业务域语义隔离才是瓶颈 当下多数企业搭建私有化 RAG 知识库时,重心都放在文档解析、文本切片、向量入库这类基础流程上,普遍默认只要完成文档向量化存入向量库,就能搭建可用的企业私有知识库。但规模化落地后会持续暴露核心短板:单纯的向量检索无法区分不… 2026/7/15 0:35:11
ChatGPT接入方案怎么选?LLM部署成本、延迟、合规性——三维度量化对比表(含实测TPS与Token损耗数据) 更多请点击: https://intelliparadigm.com 第一章:ChatGPT接入方案怎么选?LLM部署成本、延迟、合规性——三维度量化对比表(含实测TPS与Token损耗数据) 选择合适的ChatGPT接入方案,需在真实生产环境中对关… 2026/7/15 0:33:10
计算机毕业设计之jsp小学生作业帮平台的设计与实现 随着信息化时代的到来,管理系统都趋向于智能化、系统化,小学生作业帮平台也不例外,但目前国内的有些学校仍然都使用人工管理,学校规模越来越大,同时信息量也越来越庞大,人工管理显然已无法应对时代的变化&a… 2026/7/15 0:31:10
Python asyncio 深度并发:驾驭大模型调用的“车水马龙” 如果你正在用 FastAPI 构建一个 AI 应用,大概率会遇到这样的场景:用户发来一个问题,你需要同时调用 3 个大模型接口(比如让 GPT-4 写文案、让 Claude 做润色、让文心一言做翻译),最后把结果拼在一起。最笨的… 2026/7/15 0:27:09
Copilot团队管理功能落地全图谱(从权限配置到效能看板):微软内部PM未公开的7条黄金规则 更多请点击: https://codechina.net 第一章:Copilot团队管理功能全景概览 GitHub Copilot 的团队管理功能为组织级开发协作提供了统一策略配置、成员权限控制与使用洞察分析能力,覆盖从开发者准入到资源配额分配的全生命周期管理。该功能依托… 2026/7/15 0:23:09
行星减速机的工作原理是什么?从齿轮运动关系到减速比计算 一、行星齿轮机构的组成 标准行星齿轮机构主要包括: 太阳轮; 行星轮; 内齿圈; 行星架。 太阳轮位于机构中心。 多个行星轮围绕太阳轮均匀布置,行星轮内侧与太阳轮外啮合,外侧与内齿圈内啮合。 行星轮通过轴… 2026/7/15 0:03:00
阅读Java开源框架源码的心得分享! 前几日闲来无事有幸看到了一位博主分享自己阅读开源框架源码的心得,看了之后也引发了我的一些深度思考。我们为什么要看源码?我们该怎么样去看源码? 其中前者那位博主描述的我觉得很全了(如下图所示),就不做… 2026/7/15 0:03:00
【LINUX】驱动 【LINUX驱动】【字符设备】【中断】【Platform】【网课 设备树】【GPIO】【PINCTRL】【INPUT】【IIC】【SPI】【网络驱动】【屏幕驱动】【一 设备树】【二 内核模块编译】【三 基本驱动框架】【四 Platform总线设备驱动框架】【五 驱动子系统】【六 综合】 2026/7/15 0:07:01
Git reset 与 revert 深度对比:5个关键差异与 3 种典型应用场景 Git Reset 与 Revert 深度对比:5个关键差异与3种典型应用场景在团队协作开发中,代码版本管理如同行走钢丝——一步失误可能导致整个项目陷入混乱。作为Git进阶用户,你是否曾在深夜面对错误的提交束手无策?是否在强制推送后收到同事… 2026/7/13 8:31:55
GitHub 学生包申请避坑:5个常见失败原因与开发者工具调试方案 GitHub 学生包申请技术排障指南:5个高频失败场景与开发者工具实战方案第一次尝试申请GitHub学生包时,我盯着屏幕上那个不断转圈的加载动画整整15分钟,最终只等来了一行冰冷的错误提示。这可能是许多开发者共同的经历——明明按照教程操作&… 2026/7/14 18:25:04
冒烟测试用例设计规范:5%-10%覆盖率下的3类核心场景与执行标准 冒烟测试用例设计的黄金法则:5%-10%覆盖率下的精准筛选策略在快节奏的敏捷开发环境中,冒烟测试作为质量保障的第一道防线,其重要性不言而喻。当测试资源有限而时间紧迫时,如何从海量测试用例中精准筛选出那关键的5%-10%࿰… 2026/7/14 5:09:41