UWP ComboBox 样式的问题及改善

                                                               UWP ComboBox 样式的问题及改善

 

所谓下拉框,当然就是这个样子的,

但是UWP中的下拉框默认样式却是这样的:

弹出的下拉框把控件默认的部分挡住了。就算是通过改写系统提供的模板,居然也无法改变这个dropdown box的位置。

根据以下这个链接,看来在早期的版本,通过修改系统模板这个方法还是有用的。

https://social.msdn.microsoft.com/Forums/windowsapps/en-US/44b298ef-d741-4774-97e2-b954018908f1/uwpcombobox-dropdown-template

但是根据本人的测试在以下这个版本范围内, 这种方法是没用的.

通过修改模板的检验,可以验证以下这个说法应该才是正确,

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属性,用以动态绑定和获得选项

使用:

下拉列表的宽度跟整个控件的宽度保持一致。

 

随意修改个样式,比如圆角:

所有代码

https://download.csdn.net/download/mochounv/12798204

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值