现在的位置: 首页 > 综合 > 正文

DropShadowEffect导致下拉框控件抖动

2013年01月02日 ⁄ 综合 ⁄ 共 479字 ⁄ 字号 评论关闭
<!--<Border.Effect>                                                                     
<DropShadowEffect Direction="180" BlurRadius="1" ShadowDepth="0.5" Opacity="0.2"/>
</Border.Effect>-->      

我们项目中对各个系统控件都进行了自定义外观, 比如通过Style。
现象:但是程序实际运行中出现了很诡异的问题, 几个下拉框在屏幕的特定位置会抖动, 具体就是在UI被发大100倍左右明显看到控件的外观有部分上下移动1像素。
具体分析:经过调查, 发现和Trigger或者VisualState都没有关系, 而是下拉框的右边的ToggleButton的Template里用了DropShadowEffect特效。 应该是控件的父容器(比如grid)的高宽和控件本身的位置有关, 导致控件在放置自己位置时差1px(相对屏幕坐标),系统处理此情况会导致特效抖动。     
解决方法:去掉DropShadowEffect, 或者对控件的UseLayoutRounding和SnapsToDevicePixels进行设置, 或者手动放置控件使其位置相对屏幕坐标为整数。                          

抱歉!评论已关闭.