在进行开发中有这样一种情况需要ComboBox内集成checkbox列表,或是treeview列表以方便用户进行选择,提供良好的UI体验。
在开始处理之前先温习下ComboBox的基础东西,就是在XAML中的写法(我用BLEND3拖出的ComboBox控件,冗余代码会多些)
1、ComboBox控件的基本应用
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
![ExpandedBlockStart.gif](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
<!--
普通combobox测试
-->
< ComboBox HorizontalAlignment ="Left" Margin ="68,53,0,0" VerticalAlignment ="Top" Width ="120" >
< ComboBoxItem Content ="测试数据1" />
< ComboBoxItem Content ="测试数据2" />
</ ComboBox >
<!-- combobox嵌入rectangle控件 -->
< ComboBox Margin ="216,53,0,0" VerticalAlignment ="Top" HorizontalAlignment ="Left" Width ="120" >
< ComboBoxItem >
< ComboBoxItem.Content >
< Rectangle Width ="200" Height ="30" Fill ="Blue" />
</ ComboBoxItem.Content >
</ ComboBoxItem >
< ComboBoxItem >
< ComboBoxItem.Content >
< Rectangle Width ="200" Height ="30" Fill ="Red" />
</ ComboBoxItem.Content >
</ ComboBoxItem >
< ComboBoxItem >
< ComboBoxItem.Content >
< Rectangle Width ="200" Height ="30" Fill ="Green" />
</ ComboBoxItem.Content >
</ ComboBoxItem >
</ ComboBox >
<!-- combobox嵌入checkbox控件 -->
< ComboBox Margin ="365,53,0,0" VerticalAlignment ="Top" HorizontalAlignment ="Left" Width ="120" >
< ComboBoxItem >
< ComboBoxItem.Content >
< CheckBox Content ="测试数据1" />
</ ComboBoxItem.Content >
</ ComboBoxItem >
< ComboBoxItem >
< ComboBoxItem.Content >
< CheckBox Content ="测试数据2" />
</ ComboBoxItem.Content >
</ ComboBoxItem >
< ComboBoxItem >
< ComboBoxItem.Content >
< CheckBox Content ="测试数据3" />
</ ComboBoxItem.Content >
</ ComboBoxItem >
</ ComboBox >
< ComboBox HorizontalAlignment ="Left" Margin ="68,53,0,0" VerticalAlignment ="Top" Width ="120" >
< ComboBoxItem Content ="测试数据1" />
< ComboBoxItem Content ="测试数据2" />
</ ComboBox >
<!-- combobox嵌入rectangle控件 -->
< ComboBox Margin ="216,53,0,0" VerticalAlignment ="Top" HorizontalAlignment ="Left" Width ="120" >
< ComboBoxItem >
< ComboBoxItem.Content >
< Rectangle Width ="200" Height ="30" Fill ="Blue" />
</ ComboBoxItem.Content >
</ ComboBoxItem >
< ComboBoxItem >
< ComboBoxItem.Content >
< Rectangle Width ="200" Height ="30" Fill ="Red" />
</ ComboBoxItem.Content >
</ ComboBoxItem >
< ComboBoxItem >
< ComboBoxItem.Content >
< Rectangle Width ="200" Height ="30" Fill ="Green" />
</ ComboBoxItem.Content >
</ ComboBoxItem >
</ ComboBox >
<!-- combobox嵌入checkbox控件 -->
< ComboBox Margin ="365,53,0,0" VerticalAlignment ="Top" HorizontalAlignment ="Left" Width ="120" >
< ComboBoxItem >
< ComboBoxItem.Content >
< CheckBox Content ="测试数据1" />
</ ComboBoxItem.Content >
</ ComboBoxItem >
< ComboBoxItem >
< ComboBoxItem.Content >
< CheckBox Content ="测试数据2" />
</ ComboBoxItem.Content >
</ ComboBoxItem >
< ComboBoxItem >
< ComboBoxItem.Content >
< CheckBox Content ="测试数据3" />
</ ComboBoxItem.Content >
</ ComboBoxItem >
</ ComboBox >
参考资料:
2、ComboBox集成checkbox列表
上面的XAML代码中可以看到,我们可以实现将checkbox嵌入comboboxitem的容器中,但这个只能做个测试玩玩,具体应用那是不行的。
因为在网上已有高手写出了解决办法,不管是从应用角度还是学习角度都不错
Multiple-Selection ComboBox for Silverlight
这篇文章中直接对combobox进行了相应的修改,将原来combobox控件中的ItemsPresenter 替换为ListBoxItem ,做法简单,实用
3、combobox选择后文本框中显示长名称时显示省略号
看到这个标题不代表我有解决办法,哈哈。在网上找了半天只找到有WPF的相应解决办法。不过各位不要急,有资料说Silverlight 4中增加了TextTriming属性已可以像WPF一样处理