UWP ComboBox 样式的问题及改善
所谓下拉框,当然就是这个样子的,
但是UWP中的下拉框默认样式却是这样的:
弹出的下拉框把控件默认的部分挡住了。就算是通过改写系统提供的模板,居然也无法改变这个dropdown box的位置。
根据以下这个链接,看来在早期的版本,通过修改系统模板这个方法还是有用的。
但是根据本人的测试在以下这个版本范围内, 这种方法是没用的.
通过修改模板的检验,可以验证以下这个说法应该才是正确,
https://stackoverflow.com/questions/36516439/positon-of-dropdown-list-of-combobox-in-uwp
大概意思是说dropdown box 的实质是popup,并且由code behind 控制其位置。
我们当然可以通过找到这个popup,然后在opened事件中修改其显示的位置,但是计算这个位置也是一个麻烦
的事情。这个链接也提供一种简单实用的解决方案,主要是通过使用button的AttachedFlyout来模拟。
本人将其修改一下:
增加依赖属性 Items,以实现绑定不同的数据列表,
当items数据源变化时,根据变化生成下拉项。这里使用“MyFlayoutMenu"定义下拉项的样式,只是为了说明这个样式需要在App Resource级别载入。而如果没有特殊的样式的需求,宽度和背景颜色和控件保持一致就足够了。
增加“DisplayMember“依赖属性,以实现可以动态绑定数据列表项中的用来显示的项。这样使其在项目中能够小范围内适于复用。
添加SelectedItem属性,用以动态绑定和获得选项
使用:
下拉列表的宽度跟整个控件的宽度保持一致。
随意修改个样式,比如圆角:
所有代码