WPF中ListBox控件在选择模式(SelectionMode)为Single时仍然出现多个Item被选中的问题
2012-10-04 15:43
225 查看
最近在学习WPF过程中使用到了ListBox控件,在使用时遇到下面的奇怪问题:
代码如下:
如上图所示,在ListBox中动态添加string类型字符串,当点击第四项内容时,第一项同时被选中;类似地,点击第3、5、6、7项存在同样问题。而点击第二项,则不会出现上述问题。
原来,当第一次创建string类型的“绘图”字符串之后,程序中若再次用到内容为“绘图”的字符串时,.NET并没有真的生成一个新的字符串,而是引用了第一次创建的同样内容的字符串,这样就导致了前面提到的怪异现象。
要解决这个问题可以采用两种办法:一是保证填充到ListBox的每个Item得显示字符串唯一;二是将字符串包装到不同类对象中。
针对第二种办法,我的一种实现方法如下:
代码如下:
listBox.Items.Add("绘图"); listBox.Items.Add("描线加深"); listBox.Items.Add("绘图"); listBox.Items.Add("绘图"); listBox.Items.Add("绘图"); listBox.Items.Add("绘图"); listBox.Items.Add("绘图");
如上图所示,在ListBox中动态添加string类型字符串,当点击第四项内容时,第一项同时被选中;类似地,点击第3、5、6、7项存在同样问题。而点击第二项,则不会出现上述问题。
原来,当第一次创建string类型的“绘图”字符串之后,程序中若再次用到内容为“绘图”的字符串时,.NET并没有真的生成一个新的字符串,而是引用了第一次创建的同样内容的字符串,这样就导致了前面提到的怪异现象。
要解决这个问题可以采用两种办法:一是保证填充到ListBox的每个Item得显示字符串唯一;二是将字符串包装到不同类对象中。
针对第二种办法,我的一种实现方法如下:
listBox.Items.Add(new StringBuilder("绘图")); listBox.Items.Add(new StringBuilder("描线加深")); listBox.Items.Add(new StringBuilder("绘图")); listBox.Items.Add(new StringBuilder("绘图")); listBox.Items.Add(new StringBuilder("绘图")); listBox.Items.Add(new StringBuilder("绘图")); listBox.Items.Add(new StringBuilder("绘图"));如上代码所示,每次利用string类型的字符串生成一个唯一标识的对象,虽然字符串内容相同,但是通过new的方式创建的对象已经是不同的两个对象了。
相关文章推荐
- WPF中ListBox控件在选择模式(SelectionMode)为Single时仍然出现多个Item被选中的问题
- 解决360浏览器优先选择极速模式,在兼容模式下出现乱码问题
- 尝试加载 Oracle 客户端库时引发 BadImageFormatException。如果在安装 32 位 Oracle 客户端组件的情况下以 64 位模式运行,将出现此问题。(遇到了这个问题网上查了下保存下来)
- ListView Item 选择问题解决之道
- JSP 即使使用UTF-8编码,仍然出现中文乱码问题的原因
- 解决 listview的item超过屏幕显示出现滚动的全选问题
- IIS发布后出现“如果在安装 32 位 Oracle 客户端组件的情况下以 64 位模式运行,将出现此问题”错误
- 大数据架构和模式(四)了解用于大数据解决方案的原子模式和复合模式 大数据架构和模式(五)对大数据问题应用解决方案模式并选择实现它的产品
- 尝试加载 Oracle 客户端库时引发 BadImageFormatException。如果在安装 32 位 Oracle 客户端组件的情况下以 64 位模式运行,将出现此问题。
- 使用RecyclerView notifyItemChanged()出现图片闪烁问题解决
- 尝试加载 Oracle 客户端库时引发 BadImageFormatException。如果在安装 32 位 Oracle 客户端组件的情况下以 64 位模式运行,将出现此问题
- .net下灰度模式图像在创建Graphics时出现:无法从带有索引像素格式的图像创建graphics对象 问题的解决方案。
- 360兼容模式出现乱码问题
- 如果在安装32位Oracle客户端组件的情况下64位模式运行, 将出现此问题.
- 尝试加载 Oracle 客户端库时引发 BadImageFormatException。如果在安装 32 位 Oracle 客户端组件的情况下以 64 位模式运行,将出现此问题
- ListView滑动时 item出现黑色背景的问题的解决方法
- listview中item 有checkbox多选防止滑动 listview页面 出现checkbox错位问题
- 转载:用oralce连接.net客户端出现问题:“数据连接不成功,请检查该数据库是否已启动尝试加载oracle客户端时引发BadImageFormatException.如果在安装32位Oracle客户端组件的情况下以64位模式运行,”的解
- SingleLine 模式的标签云效果,仿知乎问题话题列表
- android fastboot模式下载以及出现的问题