Combox使用的一些技巧
这些天做一个小型的CMS,也就几张表,用WCF+LINQ2SQL+Silverlight这种方式开发的,对最常用的控件如DataGrid,DataForm以及Toolkit里其它一些控件的用法有了一定的了解,同时参照JV9的教程,把Silverlight里的验证机制仔细的学习了一下,前段时间学习的MVVM框架也派上了用场,感觉用MVVM模式后,客户端的代码维护和分层相对简化了不少。
今天把自己遇到的Combox中问题整理下:
关于项最简单的方式就是直接的加ComboxItem
ComboBoxItem item = new ComboBoxItem() {Content="财务部",IsSelected=true };
this.comboBox.Items.Add(item);
用绑定数据源的方式则主要就是一个DisplayMemberPath属性,
<ComboBox DisplayMemberPath="name" ItemsSource="{Binding}"/>
如果数据源是一个Department集合,那么每一个Item都是一个Department,这样的情况下,只能通过
int deptCode = (this.comboBox.SelectedItem as Departmentt).deptCode;
这种方式来获取数据的Value,不过网上有人扩展了SelectValuePath的依赖属性,具体的查看这篇文章ComboBox,
通过这种方式只要绑定到SelectValuePath就可以了
<ComboBox DisplayMemberPath="name" SelectedValuePath="deptCode" ItemsSource="{Binding}"/>
int deptId = this.cmBox.SelectedValue;
后台直接用这个SelectValue就可以了,比上面的方式方便多了。
在Sliverlight中,用绑定方式可能与直接的硬编码方式产生的效果不一样:
ComboBox绑定数据时,无法将传给它的值设为默认值,我尝试了多种方式也没效果,最后只好采取折衷的办法,
<combo:ComboBoxClassic x:Name="cmBox" DropDownOpened="cmBox_DropDownOpened"/>
当传一个值为“01,财务部”给ChildWindow中的ComboBox时,我需要将这个值显示在ComboBox上,可以这样做
this.child.cmBox.Items.Add(new ComboBoxItem { Content=dept.Name,IsSelected=true,Tag=deptId});
这种方式能够保证传过去的值显示在ComboBox中,因为我们是绑定数据源的,所以当用户更改ComboBox内容时可以在DropDownOpen事件里加载记录
if (this.cmBox.Items.Count == 1)
{
this.cmBox.Items.Clear();
}
this.cmBox.ItemsSource = null;
this.cmBox.DisplayMemberPath = "name";
this.cmBox.SelectedValuePath = "deptId";
this.cmBox.ItemsSource =...
这种方式很讨巧,其实如果用户更改ComboBox内容较频繁时,可以把数据源放在独立存储中,这样每次发生DropDownOpened事件时就不用从服务器获取数据
不过我感觉这终究不是好的方式,不知道别人是怎么传值给ComboBox并显示在选择框里的,希望可以请教一下更好的方式。
转载于:https://www.cnblogs.com/626498301/archive/2010/10/22/1858045.html
Combox使用的一些技巧相关推荐
- Qt开发过程中技巧知识点汇总
QT开发技巧 状态机: QStateMachine *pMachine = new QStateMachine();QPushButton *pState = new QPushButton;QSta ...
- keyshot怎么批量渲染_提高Keyshot逼真渲染的小技巧
Keyshot是一个特别神奇的应用软件,但是,就像Photoshop一样,如果你不知道怎么使用它,那么再优秀的工具在你手中也什么都是了.这里我就告诉你一些制作优秀效果图的技巧以及如何使用这个神奇软件. ...
- Linux shell 学习笔记(6)— vim 编辑器使用方法及技巧
1. 检查 vim 软件包 1.1 CentOS 发行版 $ alias vi alias vi='vim' $ $ which vim /usr/bin/vim $ $ ls -l /usr/bin ...
- Python 笔试面试及常用技巧 (1)
1. 交换两个数字 In [66]: x, y = 1, 2In [67]: x Out[67]: 1In [68]: y Out[68]: 2 赋值的右侧形成了一个新的元组,左侧立即解析(unpac ...
- Redis 使用技巧
Redis 现在非常受欢迎,似乎已经成为内存数据存储行业的标准.本人结合平时使用Redis经验,也同时查找了一些网上别人的总结经验,总结以下几条Redis使用技巧. 1. 停止使用 KEYS 众所周知 ...
- 受用一生的高效 PyCharm 使用技巧(六)
http://www.sohu.com/a/329854019_654419 大家好,今天我又来给大家更新 PyCharm 的使用技巧. 从第一篇开始,一直到本篇,一共更新了6篇文章,每篇 5 个小技 ...
- 受用一生的高效 PyCharm 使用技巧(四)
https://blog.csdn.net/pdcfighting/article/details/93269028 大家好,距离最近一篇 PyCharm 使用技巧的文章已经过去一月有余,最近虽然也比 ...
- 受用一生的高效 PyCharm 使用技巧(二)pycharm 指定参数运行文件
https://mp.weixin.qq.com/s/Ii0-qHUXayTPb-K-17hmQQ 在介绍技巧之前,有些话想声明一下,这个系列的一些小技巧,对于一些重试用户来说可能是小 case,如果 ...
- 受用一生的高效 PyCharm 使用技巧(一)
声明:本文章转自 返回主页Python编程时光 PyCharm 是大多数 Python 开发者的首选 IDE,每天我们都在上面敲着熟悉的代码,写出一个又一个奇妙的功能. https://www.cnb ...
最新文章
- 03_NoSQL数据库之Redis数据库:list类型
- 【django轻量级框架】(Python3.6.8+Django2.0)第一个Django项目与基础环境搭建
- 解决yum错误Error: requested datatype primary not available
- constructor
- MQTT协议笔记之mqtt.io项目TCP协议支持
- java实体字节属性定义_Java字节码方法表与属性表详解
- php.ini用哪个,php.ini:哪一个?
- 你见过“最没见过世面”的女孩子是什么样的?
- 整数类型及整数类型的显示转换
- 1.Docket 安装简介
- 分享3个整站打包程序
- 写给非网工的CCNA教程(2)第一个协议--ARP协议
- reviewboard mysql_【ReviewBoard】安装与配置
- Daily English Dictation Number Three
- 豆瓣读者董董:王博士的格子衬衫与怀里的蛇
- CAD多段线无法合并的问题
- oeasy教您玩转linux010206toilet
- Rust 从入门到精通01-简介
- 免费的网络学习工具【eNSP】
- html js 修改img 图片不拉伸,防止图片拉伸的自适应处理
热门文章
- php连接函数config,smarty内置函数config_load用法实例
- 自学python条件_自学Python2.8-条件(if、if...else)
- pat 乙级 1018 锤子剪刀布(C++)
- 光纤交换机的配置 光纤交换机的由来是什么
- 【渝粤教育】 国家开放大学2020年春季 1039高级财务会计 参考试题
- 【渝粤教育】电大中专电子商务网站建设与维护 (21)作业 题库
- 工业机器人 答案 韩建海_中国将连续8年成为工业机器人第一大市场,还将持续多久?...
- matlab 柴油机仿真,用MATLAB/SIMULINK实现柴油机及其控制系统的动态仿真
- fftw-3.3.8库在linux下的的编译和配置
- sin查找表 matlab,利用Xilinx中的ROM构造查找表来计算sin和cos的方法探讨