WPF 中设置Combox下拉框Text 显示值

最近在写一个WPF客户端的一个小程序,其中有个小需求如下:

  1. 展示下拉列表里面有树形结构
  2. 点击下拉子项时同时显示父级和子级文本

也就是说在DisplayMember 中有两种显示方式

  1. 下拉列表显示时,显示的是DisplayMember 的值
  2. 点击选中子项时,需要计算子级和父级的文本并进行拼接,然后显示在combox 中

一开始没有多想就想应该直接设置combox.Text 不就可以搞定了么,问题很简单的嘛!于是就设置了下

发现不起作用!最后查了msdn 说是combox 的 IsEditable=true 时 设置下拉框的Text才有效,于是就启用了IsEditable,运行调试发现仍然没有卵用!!

问题来了,怎么搞?那换个思路,重写Combox ? 我觉得太麻烦,就没有往这方面想,毕竟界面用的没有几个下拉框。那有没有什么先简单的方式呢?

我的思路:

    使用Textbox做高宽统一放置在Combox的上方,漏出下拉框的下拉箭头,把Textbox做成透明层(这里不是界面透明,是事件穿透哦),把Combox 与Textbox 分组为一组Gird中 做好高宽自动同步拉伸,注意在控件命名的时候最好有规律哦,后面要用到的。

xaml如下:

         <Grid Margin="62,4,220,33"><ComboBox x:Name="cmbCategoryAdd1"/><TextBox IsReadOnly="True" x:Name="txtcmbCategoryAdd1" Text="" Margin="0,0,18,0"/></Grid>

显示如下

选择:  未选择:

有没有感觉很逼真,其实上方是Textbox,好吧,现在要把Textbox 做成透明层代码如下:

            TextBox text = window.GetControlByName<TextBox>("txt" + comboBox.Name);text.Text = comboBox.GetComboxSelectedValue();text.IsHitTestVisible = false;//设置文本框为透明层

这就把Textbox 设置为透明层啦!下面来做下拉框选中以后改变Textbox 的值:

            //下拉框选择变化时发生comboBox.SelectionChanged+=new SelectionChangedEventHandler((sender, args) =>{TextBox text2 = window.GetControlByName<TextBox>("txt" + comboBox.Name);text2.Text = comboBox.GetComboxSelectedValue();});

代码里的window就是当前窗口(this),GetControlByName 也贴出来

        #region 根据控件名称,查找控件/// <summary>/// 根据控件名称,查找控件/// </summary>public static T GetControlByName<T>(this Window obj, string elementName) where T : FrameworkElement{return ((T)obj.FindName(elementName));}#endregion
现在查看下效果

嗯,不错,效果还是很满意的,没有重写Combox,这样放置个透明Textbox 简单两句代码就可以实现啦。小东西,目的是为了培养自己写博客的习惯。

 

 

转载于:https://www.cnblogs.com/nodes/p/8681969.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/453090.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

简单的文件上传功能实现(java)

现在很多做后台系统的项目大部分都会用到文件上传这个功能&#xff0c;网上有很多例子&#xff0c;这边是自己用SSM框架技术做的一个简单的文件上传功能。 在写文件上传功能前首先要导入相应的jar包&#xff1a; commons-fileupload-1.3.1-jar &#xff1b;commons-io-2.2-jar …

多读读书,对自己有好处

首先&#xff0c;打破一切常规 我一直以来养成了一个习惯&#xff0c;就是睡觉之前看半个小时或更长时间的书&#xff0c;这些书都是杂七杂八的&#xff0c;没有特定的类型&#xff0c;这种习惯有好有坏&#xff0c;好的书好的句子能让我回味无穷&#xff0c;在甜美中慢慢地进…

增量导出_[华为]一种实用的增量式深度CTR模型训练方法

今天给大家介绍一篇有关深度CTR模型增量训练的文章&#xff0c;来自华为诺亚方舟实验室。1、背景深度CTR模型需要大量的数据进行训练&#xff0c;同时需要不断的更新以适应最新的数据分布。如果模型没有及时更新&#xff0c;则有可能带来线上效果的衰减&#xff0c;如下图&…

win7如何添加终端服务器,Windows7系统超级终端的添加方法 win7如何添加超级终端...

有用户在刚升级到Windows7系统以后反映&#xff0c;在XP 操作系统里&#xff0c;超级终端是很好用的&#xff0c;但是却不知道为什么&#xff0c;升级为Windows7系统后却找不到超级终端在哪&#xff0c;出现这样的情况让用户非常的烦恼&#xff0c;其实找不到超级终端&#xff…

腾讯这家公司的核心竞争力是什么?为什么?

Andy Pan &#xff0c;腾讯无线国际业务产品总监, 腾讯国际业务部... 我决定在国外出差的最后一晚晚点休息,在酒店静静的认真的回答这个问题。我尽量客观的负责的回答&#xff0c;不愤青&#xff0c;不炫耀&#xff0c;不攻击&#xff0c;用朴实的语言。只代表我个人的思考&…

h.323 服务器 作用,Cisco CallManager服务器冗余的H.323 网关拨号对端配置

语音、视频和集成数据 (AVVID) 设计的体系结构一般建议您具有主 Cisco CallManager 服务器和辅助 Cisco CallManager 服务器以实现冗余。如果主 Cisco CallManager 服务器发生故障&#xff0c;则辅助 Cisco CallManager 服务器将接管&#xff0c;并且 IP 电话将重定向到此服务器…

静态优先权和动态优先权

静态优先级&#xff1a;在创建进程时确定的&#xff0c;且在进程的整个运行期间保持不变动态优先级&#xff1a;在创建进程时所赋予的优先权&#xff0c;是可以随进程的推进或随其等待时间的增加而改变的&#xff0c;以便获得更好的调度性能。确定静态优先权的依据有如下三个方…

xmind可以画流程图吗_新娘妆可以自己画吗?临夏化妆学校告诉你答案!

对于很多女性来说&#xff0c;一生中最重要的时候无疑是新婚的那一天&#xff0c;古时候的闺阁女子&#xff0c;凤披霞冠&#xff0c;八台大轿&#xff0c;携手自己的如意郎君相伴一生&#xff0c;现代女子&#xff0c;洁白的婚纱&#xff0c;手握鲜花&#xff0c;一枚戒指&…

2.如何对待加班

感觉深圳尤其是IT行业&#xff0c;加班确实很普遍。我觉得主要看是为什么加班吧&#xff0c;是公司强制要求&#xff0c;还是员工开发效率低&#xff0c;还是加班有额外的收入&#xff0c;还是想在这个期间学习&#xff0c;自我提升。公司为什么会形成这个氛围&#xff0c;是自…

计算机一级发邮件发送多个抄送,计算机一级考试IE题和收发邮件模拟题.docx

文档介绍&#xff1a;某模拟网站的主页地址是:HTTP://LOCALHOST:65531/ExamWeb/INDEX.HTM,打开此主页,浏览"航空知识"页面,查找"运十运输机"的页面内容,并将它以文本文件的格式保存到考生目录下,命名为"y10ysj.txt"。IE题①通过"答题"…

git merge与rebase

参考这篇文章 Git 之 merge 与 rebase 的区别 文章2 另外&#xff0c;使 rebase出现冲突后&#xff0c;先修改冲突&#xff0c;然后git add 某文件&#xff08;我使用add .经常有问题&#xff09;&#xff0c;然后git rebase --continue&#xff0c;持续到rebase结束&#xf…

wget 地址 连接超时_HttoPool连接池 和Hystrix 服务容错机制

学习主题&#xff1a;httpPool&Hystrix学习目标&#xff1a;对应视频: http://www.itbaizhan.cn/course/id/85.html对应文档:无对应作业1. 编写支持Gzip压缩案例(1) 修改Consumer的全局配置文件&#xff0c;添加Gzip相关配置。spring.application.nameeureka-consumer-http…

JQuery 加载 CSS、JS 文件

JS 方式加载 CSS、JS 文件&#xff1a; //加载 css 文件 function includeCss(filename) {var head document.getElementsByTagName(head)[0];var link document.createElement(link);link.href filename;link.rel stylesheet;link.type text/css;head.appendChild(link) …

关闭网页如何接收服务器消息,WebSocket服务端发消息给客户端,浏览器收到消息就关闭了...

引用 2 楼 fly_dragon_fly 的回复:收到的消息是什么0000 00 0b ab 7a 86 83 18 f4 6a 36 60 a2 08 00 45 00 ...z....j6...E.0010 00 b9 49 d3 40 00 40 06 6b aa c0 a8 01 79 c0 a8 ..I...k....y..0020 01 f8 08 03 71 88 a4 d5 52 dc ce c1 f6 89 50 18 ....q...R..…

街舞中的rolling机器人_REMEMBER街舞培训中心2020年元旦汇演

二零二零 元旦汇演REMEMBER2020年1月1日&#xff0c;Remember街舞培训中心在爱琴海购物公园进行了两个小时的汇报表演&#xff0c;Remember的学员们贡献了非常精彩的表演。在过去的2019年&#xff0c;我们一路探索、一路艰辛、一路欣喜、一路收获&#xff0c;在这里感谢所有老…

shell基础(上)

2019独角兽企业重金招聘Python工程师标准>>> 一 shell介绍 shell 是一个命令解释器。本质上是用户与计算机之间的交互。 用户把指令告诉shell&#xff0c;然后shell再传输给系统内核&#xff0c;接着内核再去支配计算机硬件去执行各种操作。 每个用户都可以有自己特…

webRTC实战总结

前言 前段时间一直在忙一个基于WebRTC的PC和移动端双向视频的项目。第一次接触webRTC&#xff0c;难免遇到了许多问题&#xff0c;比如&#xff1a;webRTC移动端兼容性检测&#xff0c;如何配置MediaStreamConstraints&#xff0c; 信令(iceCandidate, sessionDescription)传输…