ListBox等控件的SelectedItem,SelectedValue,SelectedValuePath属性详解

embedded/2024/9/18 12:53:08/ 标签: wpf

引言

初学WPF可能会对诸如ComboBox、ListBox等集合控件的当前选择项的绑定有所疑惑,控件提供了两个可绑定对象:SelectedItem\SelectedValue,同时还有DisplayMemberPath\SelectedValuePath。本节来讲述一下它们的设计意图和用法。

1、SelectedItem与DisplayMemberPath

在Winform中,我们经常用到SelectedItem,它表示的就是当前控件的选择项。若你给控件的Itemsource绑定到集合List<Person>、ObservableCollection<Person>等,当前SelectedItem即为某一个Person,这样的说明略显苍白冗余。记住此刻我们SelectedItem指代的是整个Person实例。

DisplayMemberPath 可以进一步指定控件中显示Person的有一个属性。如果不设置DisplayMemberPath,控件会调用Person的ToString()方法,显示结果。

<ListBox Name="PersonListBox"SelectedIndex="0"SelectedItem="{Binding SelectedPerson}"DisplayMemberPath="Name"ItemsSource="{Binding Persons}"/>

2、SelectedValue与SeletedValuePath

WPF除了绑定ViewModel的属性,还可以绑定xmal元素的属性,当我们需要绑定当前选择项Person时我们可以通过ElementName查找等方法找到比如ComboBox、ListBox的SelectedItem。如果需要关注Person的某一个属性,则要写成SelectedItem.ID、SelectedItem.Name等形式。

<TextBlock Text="{Binding ElementName=PersonListBox,Path=SelectedItem.Name}"/>

现在增加需求,我们想要在ViewModel中直接观察当前选中Person的某一个属性,比如Name\ID等,或则后台通过更改当前CurrentPersonID实现当前选项的更改时,可能就比较麻烦,此时WPF为我们提供的SelectedValue和SelectedValuePath就派上用场了。

SelectedValuePath用来指定你要对外绑定的Person属性名称,SelectValue用来绑定该属性。

//vm
public string CurrentPersonID{get;set;}//xaml
<ListBox Name="PersonListBox"SelectedIndex="0"SelectedItem="{Binding SelectedPerson}"SelectedValue="{Binding CurrentPersonID}"SelectedValuePath="ID"ItemsSource="{Binding Persons}"/><TextBlock Text="{Binding CurrentPersonID}"/>

注:SelectedValue是支持双向绑定通知的


http://www.ppmy.cn/embedded/105449.html

相关文章

ClickHouse的安装教程

ClickHouse的安装教程 文章目录 ClickHouse的安装教程写在前面准备工作关闭防火墙CentOS 取消打开文件数限制安装依赖CentOS 取消 SELINUX 单机安装在 **node01** 的/opt/software 下创建 clickhouse 目录将下载的文件上传到 node01 的 /opt/software/clickhouse 目录下将安装文…

Electron 项目实战 01:主进程与渲染进程通信

项目搭建 创建命令 mkdir electron_app cd electron_app npm init -y yarn add electron -D必要的配置 package.json {"name": "my-electron-app","version": "1.0.0","main": "main.js","license": &q…

Excel中.xls和.xlsx文件格式的区别,及C++操作Excel文件

‌文件结构和兼容性‌&#xff1a; XLS是Excel 97-2003版本的文件格式&#xff0c;而XLSX是Excel 2007及以上版本的文件格式。XLS格式是向下兼容的&#xff0c;意味着较新的Excel版本可以打开XLS文件&#xff0c;但较旧的版本无法打开XLSX文件。相反&#xff0c;XLSX格式是向上…

Kafka【五】Buffer Cache (缓冲区缓存)、Page Cache (页缓存)和零拷贝技术

【1】Buffer Cache (缓冲区缓存) 在Linux操作系统中&#xff0c;Buffer Cache&#xff08;缓冲区缓存&#xff09;是内核用来优化对块设备&#xff08;如磁盘&#xff09;读写操作的一种机制&#xff08;故而有一种说法叫做块缓存&#xff09;。尽管在较新的Linux内核版本中&a…

git分支的管理

分支管理是 Git 版本控制系统中的一个核心功能&#xff0c;它涉及如何创建、管理、合并和删除分支&#xff0c;以便在团队协作和开发过程中更有效地组织代码。以下是分支管理中的一些关键概念和实践&#xff1a; 1. 分支的创建 创建新分支&#xff1a;在开发新功能、修复 bug…

大模型微调

目录 是whyhowa. Data preparationb. Choosing the right pre-trained modelc. Identifying the right parameters for fine-tuningd. Validatione. Model iterationf. Model deployment 挑战微调 vs RAG参考 是 调整已训练好的LLM&#xff0c;适应特定领域的知识和任务。 与R…

ffmpeg音视频开发从入门到精通——ffmpeg日志及目录操作

文章目录 FFMPEG1. 操作日志1. AV_LOG_ERROR2. AV_LOG_WARNING3. AV_LOG_INFO4. AV_LOG_DEBUG5. 日志级别的使用 2. 文件移动和删除1. avpriv_io_delete()功能函数原型输入参数返回值 2. avpriv_io_move()功能函数原型输入参数返回值 案例代码功能概述详细步骤 3. 操作目录重要…

阿姆达尔定律

阿姆达尔定律&#xff08;Amdahl’s Law&#xff09;是一个在计算机科学和软件架构设计中经常提到的概念&#xff0c;它用于描述并行计算中的加速瓶颈。简单来说&#xff0c;这个定律告诉我们&#xff1a;在一个系统中&#xff0c;某部分任务如果不能被并行化&#xff0c;那么无…

GD - EmbeddedBuilder - 在EXTI中断回调中,可以知道中断触发类型

文章目录 GD - EmbeddedBuilder - 在EXTI中断回调中&#xff0c;可以知道中断触发类型概述笔记END GD - EmbeddedBuilder - 在EXTI中断回调中&#xff0c;可以知道中断触发类型 概述 看了EmbeddedBuilder_v1.4.1.23782自带的官方demo工程&#xff0c;里面关于外中断的demo工程…

Java后端微服务架构下的数据库设计:Sharding与CQRS

Java后端微服务架构下的数据库设计&#xff1a;Sharding与CQRS 大家好&#xff0c;我是微赚淘客返利系统3.0的小编&#xff0c;是个冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01; 微服务架构与数据库设计 微服务架构将应用程序分解为一组小型服务&#xff0c;每…

在Ubuntu 16.04上安装MySQL的方法

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。 简介 MySQL 是一个开源的数据库管理系统&#xff0c;通常作为流行的 LAMP&#xff08;Linux、Apache、MySQL、PHP/Python/Perl&#xf…

EmguCV学习笔记 VB.Net 第8章 图像分割

版权声明&#xff1a;本文为博主原创文章&#xff0c;转载请在显著位置标明本文出处以及作者网名&#xff0c;未经作者允许不得用于商业目的。 EmguCV是一个基于OpenCV的开源免费的跨平台计算机视觉库,它向C#和VB.NET开发者提供了OpenCV库的大部分功能。 教程VB.net版本请访问…

耳机重度患者在用的蓝牙耳机?四款值得入手的开放式耳机推荐

作为使用过不下五十款蓝牙耳机的耳机重度患者&#xff0c;最近开放式耳机确实很流行&#xff0c;而且其实开放式耳机也有很多优点的&#xff0c;主要是有下面几点&#xff1a; 1佩戴体验‌&#xff1a;由于‌开放式耳机非直接入耳&#xff0c;所以‌长时间佩戴也不会产生闷热感…

Unity数据持久化 之 文件操作(增删查改)

本文仅作笔记学习和分享&#xff0c;不用做任何商业用途 本文包括但不限于unity官方手册&#xff0c;unity唐老狮等教程知识&#xff0c;如有不足还请斧正​​ 这里需要弄清几个概念&#xff1a; File&#xff1a;提供文件操作的静态方法&#xff0c;是管理的 Windows.File -…

力扣2503.矩阵查询可获得的最大分数

力扣2503.矩阵查询可获得的最大分数 离线算法 排序 小根堆 将query数组从小到大排序&#xff0c;用小根堆存每个单元格的值从小到大遍历query&#xff0c;如果堆顶元素小于query[i]&#xff0c;弹出&#xff0c;直到全部弹出&#xff0c;总弹出个数为答案 class Solution …

epoll机制处理TCP多客户端连接

服务端 #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <string.h> #include <sys/types.h> /* See NOTES */ #include <sys/socket.h> #include <netinet/in.h> #include <netinet/ip.h> #…

伦理学(Ethics)

讯飞星火 伦理学哲学是一门关于道德问题的科学&#xff0c;旨在系统化和理论化道德思想观点。作为一门独立的哲学分支学科&#xff0c;伦理学的本质是对道德现象进行研究&#xff0c;包括道德意识、道德行为以及道德规范现象等。 伦理学的研究对象广泛&#xff0c;涉及个人的…

jQuery基础——Ajax

写在前面 参考文献&#xff1a;莫振杰《从0到1&#xff1a;jQuery快速上手》 这次讲讲Ajax。 Ajax简介 Ajax&#xff0c;全称“Asynchronous JavaScript and XML”&#xff0c;也就是“异步的JavaScript和XML”。 Ajax核心是通过JS的XMLHttpRequest对象&#xff0c;以异步的…

2024年携程大数据开发面试题及参考答案

目录 Java Object 类中包含的方法 hashCode 方法和 equals 方法的关系以及它们的重要性 volatile 关键字在 Java 中的作用 对 java.util.concurrent 包下的类的了解 线程池的核心参数及其作用 优先队列(PriorityQueue)的概念 红黑树 对 Hadoop 和 Spark 的了解 为什…

kubectl陈述式资源管理方式、声明式资源管理

一、命令行: kubectl命令行工具 优点: 90%以上的场景都可以满足 对资源的增&#xff0c;删&#xff0c;查比较方便&#xff0c;对改不是很友好 缺点:命令比较冗长&#xff0c;复杂难记 声明方式&#xff1a;k8s当中的yaml文件实现资源管理----声明式 GUI:图形化工具的管理…