当前位置: 首页 > news >正文

WPF 多值绑定(MultiBinding)详解

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(); } }

步骤 2:UI 绑定(MultiBinding)

xml

<TextBlock> <TextBlock.Text> <MultiBinding Converter="{StaticResource StringJoinConverter}"> <Binding Path="UserName" /> <!-- 第1个值 --> <Binding Path="Age" /> <!-- 第2个值 --> </MultiBinding> </TextBlock.Text> </TextBlock>

步骤 3:注册转换器

xml

<Window.Resources> <local:StringJoinConverter x:Key="StringJoinConverter"/> </Window.Resources>

4. 示例 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 使用:

xml

<Button Content="登录"> <Button.IsEnabled> <MultiBinding Converter="{StaticResource LoginEnableConverter}"> <Binding Path="UserName" /> <Binding Path="Password" /> </MultiBinding> </Button.IsEnabled> </Button>

效果:用户名、密码都输入内容,按钮才可以点击。


三、超级完整版 Demo(可直接复制运行)

ViewModel

public 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}"); }); } }

UI

xml

<StackPanel Margin="20"> <TextBox Text="{Binding UserName, UpdateSourceTrigger=PropertyChanged}" Placeholder="姓名"/> <TextBox Text="{Binding Age}" Margin="0 5" Placeholder="年龄"/> <!-- 多值绑定 --> <TextBlock FontSize="18" Margin="0 10"> <TextBlock.Text> <MultiBinding Converter="{StaticResource StringJoinConverter}"> <Binding Path="UserName" /> <Binding Path="Age" /> </MultiBinding> </TextBlock.Text> </TextBlock> <!-- 命令绑定 --> <Button Content="显示信息" Command="{Binding ShowInfoCommand}" /> </StackPanel>

四、核心总结

多值绑定(MultiBinding)

  1. 一个属性绑定多个数据源
  2. 必须配合IMultiValueConverter
  3. 常用场景:文本拼接、多条件判断、组合数据
  4. 语法结构固定:

    xml

    <MultiBinding Converter="..."> <Binding Path="..." /> <Binding Path="..." /> </MultiBinding>
http://www.jsqmd.com/news/439908/

相关文章:

  • 计算机毕业设计springboot基于Android高校教学楼信息管理系统 基于SpringBoot与Android技术的智慧校园教室资源调度平台设计 采用移动端的高校教学场所智能化预约与管理系统研发
  • Spring Boot入门(快速搭建第一个项目,新手零配置)
  • 赶deadline必备 一键生成论文工具 千笔·专业论文写作工具 VS 学术猹
  • 现在2026年开始学网络安全的真实情况是什么?还好就业吗?
  • 关于wangEdit如何添加标注
  • 计算机毕业设计springboot基于Android的运动助手 基于SpringBoot与Android技术的智能健身管理平台设计与实现 采用移动端的企业员工运动健康追踪系统研发
  • 拼多多商品券后价API接口使用指南
  • 3月科技企业孵化器公司推荐,看看哪些做得好,科技企业孵化器/企业孵化服务/科技政策申报,科技企业孵化器企业口碑推荐榜 - 品牌推荐师
  • hot100 322.零钱兑换
  • 2026年全屋定制品牌推荐:智能家居趋势评测,涵盖日常与高端场景定制痛点 - 品牌推荐
  • 直接上代码先看效果!咱们先跑个Demo感受下哈里斯鹰优化LSSVM的威力。准备好你的Matlab,把这段代码扔进去运行
  • 2026年国内热门齿轮减速机厂家怎么选?这些要点务必要知道,硬齿面斜齿轮减速机/粮机用减速机,齿轮减速机供应厂家怎么选 - 品牌推荐师
  • 2026年冷水机厂家推荐:聚焦化工制药领域评价,解决定制化与稳定运行痛点 - 品牌推荐
  • 从零到一:现代Web扫雷游戏的全栈开发实践与深度解析
  • 照着用就行:10个降AI率软件降AIGC网站 本科生必看!降AI率测评与推荐
  • 2026 API 中转站怎么选:我更看重成本可控和迁移省事 - 147API
  • .NET SqlSugar多线程下SqlSugarClient 的线程安全陷阱
  • 2026体育场地服务商推荐榜:塑胶跑道厂家/塑胶跑道实力厂家/塑胶跑道施工/塑胶跑道源头厂家/塑胶跑道生产厂家/选择指南 - 优质品牌商家
  • 2026年冷水机厂家推荐:基于多行业应用评价,针对稳定性与能效痛点精准指南 - 品牌推荐
  • 好用还专业!降AIGC软件 千笔 VS 文途AI 专科生首选
  • 2026年上海离婚律师推荐:涉外与本地婚姻法律需求全面评价与排名分析 - 品牌推荐
  • 2026国内靠谱彩色乒乓球企业排行,口碑好的都在这,训练乒乓球/训练球乒乓球/三星乒乓球正品,乒乓球企业推荐榜单 - 品牌推荐师
  • 喷墨印刷流量测量优选:高精准超声波流量传感器品牌推荐 - 品牌2026
  • 2026年上海离婚律师推荐:涉外与财产分割场景评价,解决情绪疏导与证据痛点 - 品牌推荐
  • 音视频开源项目:Seal顶级Android视频与音频下载器(几乎是全平台视频解析开源工具)
  • 适配涂覆工艺流量测量,2026超声波流量传感器品牌推荐 - 品牌2026
  • 2026年工控主板厂家推荐:基于多行业应用实测评价,针对兼容性与耐用性痛点精准指南 - 品牌推荐
  • 2026年冷水机厂家推荐:基于多行业应用评价,针对稳定性与能效痛点精准指南。 - 品牌推荐
  • 工业自动化领域流量测量优选:超声波流量计品牌推荐 - 品牌2026
  • 如何选择上海离婚律师?2026年上海离婚律师推荐与排名,直击谈判效率与成本痛点 - 品牌推荐