Silverlight的ComboBox 的绑定和取值
Silverlight的ComboBox与winform中的ComboBox存在类似的地方,但也有不同之处,本章包含以下内容:
一、ComboBox 如何添加和绑定数据。
二、ComboBox 如何添加自定义Item。
三、ComboBox 如何取得所选项的值。
首先我们在页面添加4个ComboBox分别用不同的形式进行绑定。

代码
<ComboBox Height="23" HorizontalAlignment="Left" Margin="12,65,0,0" Name="comboBox1" VerticalAlignment="Top" Width="161" />
<ComboBox Height="27" HorizontalAlignment="Left" Margin="12,123,0,0" Name="comboBox2" VerticalAlignment="Top" Width="163" />
<ComboBox Height="23" HorizontalAlignment="Left" Margin="12,180,0,0" Name="comboBox3" VerticalAlignment="Top" Width="165" SelectionChanged="comboBox3_SelectionChanged" />

接下来,我们先介绍添加和绑定数据的方法。
如何添加和绑定数据:
this.comboBox.Items.Add("武汉");
this.comboBox.Items.Add("大连");
this.comboBox.Items.Add("苏州");
上面的代码用最简单的方法添加了3个string类型的对象到comboBox中,运行后效果如下:
对于自定义的数据类型我们可以用下面的方法进行绑定:
第一步:定义数据对象
public class MyData
{
public DateTime Time
{ get; set; } public string Place
{ get; set; }
}
第二步:填充数据,并进行绑定:
{
new MyData{Time =DateTime.Now.AddDays(1),Place="中山路"},
new MyData{Time =DateTime.Now.AddDays(2),Place="光谷高新"}
};
this.comboBox3.DisplayMemberPath = "Place";
this.comboBox3.ItemsSource = list;
我们通过设置this.comboBox3.DisplayMemberPath = "Place" 来定义显示哪个字段。运行效果如下图:
是不是很简单呢,那么接下来我们介绍一下如何进行自定义Item的添加。
如何添加自定义Item:
要添加自定义Item我们就需要用到ComboBoxItem对象。
在上面的代码中,我们分别对3个ComboBoxItem对象设置了背景色、对齐方式和值,剩下要做的只需要将这些对象添加到ComboBox中即可。
this.comboBox1.Items.Add(cbiRight);
this.comboBox1.Items.Add(cbiCenter);
this.comboBox1.Items.Add(cbiLeft);
运行效果如下:
在某些情况下我们需要显示更复杂的效果,比如在下拉框中显示图片,那这样的需求应该如何处理呢?看看后面的代码就知道了。
既然我们需要显示图片,那么我们就先定义一个Image图片对象,然后我们在定义一个Label进行文字显示。
Image img = new Image();
img.Source = new BitmapImage(new Uri("0.jpg",UriKind .Relative));
Label lbl = new Label();
lbl.Content = "带图片的选项";
然后我们需要用一个容器装载这两个对象,这里我们使用的是StackPanel。
StackPanel sp = new StackPanel();
sp.Orientation = Orientation.Horizontal;
sp.Children.Add(img);
sp.Children.Add(lbl);
在这里可以看到我们在设置StackPanel的方向时选择的是 Orientation.Horizontal,就表示我们添加的两个对象会水平的显示在下拉框中。
最后一步就是把这个容器加载到我们的ComboBox中。
ComboBoxItem multipleCmb = new ComboBoxItem();
multipleCmb.Content = sp; this.comboBox2.Items.Add(multipleCmb);
运行结果如下,我们可以看到图片和文字同时现实在一个选择项内。
现在我们已经用不同的方法把数据添加到ComboBox中了,接下来的问题就是如何取得所选项的值。
如何取得所选项的值:
一般情况下有两种方式进行取值代码如下:
{
MyData md = (sender as ComboBox).SelectedItem as MyData;
DateTime selectedDateTime = md.Time;
string selectedPlace = md.Place;
MyData md2 = comboBox3.SelectedValue as MyData;
DateTime selectedDateTime2 = md2.Time;
string selectedPlace2 = md2.Place;
}
这里的 MyData 是我们在前面自定义的数据类型,当我们在SelectionChanged事件中进行取值时,可分别对SelectedItem和SelectedValue进行操作,
我们只需要将它们显示的转换成正确的数据类型即可。
本章所涉及的完整代码:
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
d:DesignHeight="600" d:DesignWidth="800">
<Grid x:Name="LayoutRoot" Background="White">
<ComboBox Height="23" HorizontalAlignment="Left" Margin="12,12,0,0" Name="comboBox" VerticalAlignment="Top" Width="165" SelectionChanged="comboBox_SelectionChanged" />
<ComboBox Height="23" HorizontalAlignment="Left" Margin="12,60,0,0" Name="comboBox1" VerticalAlignment="Top" Width="165" />
<ComboBox Height="27" HorizontalAlignment="Left" Margin="12,164,0,0" Name="comboBox2" VerticalAlignment="Top" Width="165" />
<ComboBox Height="23" HorizontalAlignment="Left" Margin="12,113,0,0" Name="comboBox3" VerticalAlignment="Top" Width="165" SelectionChanged="comboBox3_SelectionChanged" />
</Grid>
</UserControl>
Silverlight的ComboBox 的绑定和取值的更多相关文章
- jsf初学selectOneMenu 绑定与取值
jsf 的selectOneMenu 最后生成的<select>标签.这里涉及到一个binding 起初一直不知道是干嘛的,后来参考了其他文章.就相当于在asp.net 中如:<as ...
- 关于MVC视图下拉菜单绑定与取值的问题
绑定视图中dropdownlist: 视图中的代码: @Html.DropDownList("select1") 此处的slect1也就是页面上的<select>< ...
- AngularJS radio绑定与取值
<div id="commentModal" class="modal fade" role="dialog" ng-app=&quo ...
- 通过编写串口助手工具学习MFC过程——(十)UpdateData()用法和编辑框的赋值、取值
通过编写串口助手工具学习MFC过程 因为以前也做过几次MFC的编程,每次都是项目完成时,MFC基本操作清楚了,但是过好长时间不再接触MFC的项目,再次做MFC的项目时,又要从头开始熟悉.这次通过做一个 ...
- silverlight中 ComboBox绑定数据库,并获取当前选定值
silverlight中 ComboBox绑定数据库,并获取当前选定值 在silverlight中 用combobox下拉菜单绑定数据库的方法和用DataGrid绑定数据库的方法类似. page.xa ...
- CYQ.Data 快速开发之UI(赋值、取值、绑定)原理
昨夜园子猴子问了几个我CYQ.Data使用的小问题,经过简单解答后,他表示“妈妈再也不用担心我的学习",并于事后以资鼓励,希望这框架越走越好. 除了技术上的交流,双方在生活,S上面的问题上也 ...
- Jquery实现数据双向绑定(赋值和取值),类似AngularJS
<!DOCTYPE html> <html> <head> <meta name="viewport" content="wid ...
- js从后台取值并绑定到元素上
用ajax从后台取值不是什么有技术含量的活计,把后台取来的值绑定到Vue对象上也不算难,但每一次向后台拿数据的时候都得写上这么一段代码就十分痛苦了. 于是我写了这么一小段js代码,能够自己根据url去 ...
- easyui combobox 的取值问题
easy-combobox 取值问题 例子:<select id="cc" class="easyui-combobox" name="cc&q ...
随机推荐
- 10.12_win8风格,把专业书籍当小说看,SQLite
(1)CSS:Metro UI CSS(Metroui) 是一套实现了 Windows 8 的 Metro 风格界面的 CSS 框架..官网.BootMetro . (2)[开源访谈]CecOS作者 ...
- 删除Windows右键不用的选项
1.使用QQ电脑管家或者360的,一般都有小工具. 2.管理注册表 █以WindowsXP(SP2)为例,有些右键菜单中的选项你并不常用,或者有些软件已被删除,但其仍然占据着右键菜单.要删除这些无用的 ...
- js 作为属性的变量
当声明一个javascript全局变量时,实际上是定义了全局对象的一个属性. 当使用var声明一个变量时,创建的这个属性是不可配置的,也就是说这个变量无法通过delete运算符来删除.可能你已经注意到 ...
- asp.net中生成缩略图并添加版权实例代码
这篇文章介绍了asp.net中生成缩略图并添加版权实例代码,有需要的朋友可以参考一下 复制代码代码如下: //定义image类的对象 Drawing.Image image,newimage; //图 ...
- PHP用memcached做实时分页
用memcached做分页缓存,可能很多人会觉得麻烦而不用.因为在增加.修改.删除的过程中,你不知道会影响到哪些数据,而如果把所有分页相关的数据缓存都删除并重新生成一遍,实现又很麻烦,甚至不可行,所以 ...
- user-agent查询
浏览器地址栏输入:javascript:window.navigator.userAgent通过网站查询:http://www.enhanceie.com/ua.aspxhttp://www.user ...
- 修改phpmyadmin上传文件大小限制
当你想将SQL语句,导入phpmyadmin 时,发现自己的sql语句文本大小 大于 phpmyadmin的课上传的文本大小. 默认phpmyadmin上传文件大小为2M,如果想要phpmyadmin ...
- JDOM
JDOM是什么: To provide a complete, Java-based solution for accessing, manipulating, and outputting XML ...
- Java NIO回炉
重回东软了,据说可能要做一个跟文件相关的项目,于是决定把Java NIO的内容再捡起来,看看. 为什么要使用NIO,其实在低连接数的情况下,NIO的性能是要低于IO的:但是在高并发的情况下,确实NIO ...
- 传感器- 加速计 - CoreMotion
/** * CoreMotion * */ #import "ViewController.h" #import <CoreMotion/CoreMotion.h> ...