码迷,mamicode.com
首页 > 其他好文 > 详细

ComboBox注意事项

时间:2014-11-27 18:04:27      阅读:123      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   io   ar   color   os   sp   文件   

 

今天写代码的时候遇到这样一个问题,Silverlight项目在IIS上发布后,通过本机IP访问ComboBox的列表内容不显示。而通过VS运行,localhost,127访问均没有问题。检查了IIS配置没有问题(我的列表是读取的服务器上XML里的数据),文件客户端请求到了,查看了DisplayMemberPath属性,设置的Name属性也没有问题。百思不得其解之后又仔细跟踪了一下代码。陡然发现原来问题出在自定义类上。先上一段代码,大家分析一下

comboBox.DisplayMemberPath = "Name";

comboBox.Items.Add(new 
{
    Name = "hello",
    Value = "nice to meet you"
});

这段代码运行之后会怎么样呢,答案是ComboBox列表里并没有你想要的内容,也就是hello选项,这是怎么回事呢。仔细的话你会发现原来列表里边并非没有选项,而只是内容内有显示。效果是这样的

bubuko.com,布布扣

其实Items里边已经添加了这个匿名类对象,也能访问到其属性值。但内容为什么不显示呢,原来如果Items添加的是自定义对象,这个类必须是public类型。这就是问题所在了。

我代码里边是自定义的一个类,因为没有用public声明,默认为私有了。但奇怪的是只有在用IP访问后才暴露这个问题,却是不知道什么原因。

这里再补充几点ComboBox知识点:

1、DisplayMemberPath,获取或设置为每个数据项显示的属性的名称或路径,比如上边的Name

2、SelectedValuePath,获取或设置选中数据项的属性名称或值

3、SelectedItem,获取或设置选中的数据项对象,即上边的匿名对象

4、SelectedValue,获取或这是选中项的值,这个值即SelectedValuePath指定属性的值

5、数据项显示多个字段内容的方法,可以采用这种方式

 1 <ComboBox ...>
 2       <ComboBox.ItemTemplate>
 3           <DataTemplate>
 4               <StackPanel Orientation="Horizontal">
 5                   <TextBlock Text="{Binding Name}"/>
 6                   <TextBlock Text="{Binding Value}"/>
 7               </StackPanel>
 8           </DataTemplate>
 9       </ComboBox.ItemTemplate>
10 </ComboBox>  

 



 

ComboBox注意事项

标签:style   blog   http   io   ar   color   os   sp   文件   

原文地址:http://www.cnblogs.com/Ghunter/p/4126707.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!