<!--<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进行设置, 或者手动放置控件使其位置相对屏幕坐标为整数。