我有一个自定义的UserControl,一个包含一个大按钮的网格,里面有一些元素。我添加了一个下拉阴影效果,当鼠标在它上面时,它都工作,但按钮内的文本要么稍微垂直拉伸或垂直移动,很难说,有些人可能会说它变得模糊。这是非常明显和分散注意力,特别是当快速获得鼠标在它的一个和关闭连续。
我想知道是什么原因造成的,以及如何修复它。
我会附上几张照片,他们可能不会做这个问题的正义。without dropshadowwith dropshadow
我试着改变了一些主要的网格属性的基础上,一些模糊的文本和阴影,但没有效果-UseLayoutRounding
和SnapsToDevicePixels
。我认为问题可能是Width
和Height
以某种方式强制渲染到一个受限制的固定大小,但没有任何工作。
我还尝试了TextOptions.TextFormattingMode="Display"
,这有一点帮助,但没有完全解决这个问题,文本仍然移动。
我把按钮的内容放在一个边框中,就像一些解决方案建议的那样,但是我不能点击按钮,它甚至对移动文本没有帮助。
还能做些什么呢?
编辑:添加复制代码的按钮与触发下拉阴影鼠标。
<Button Background="White" Margin="20,20,0,0" Width="300" Height="200" >
<Button.Template>
<ControlTemplate TargetType="{x:Type Button}">
<Border Background="{TemplateBinding Background}">
<TextBlock FontSize="12" FontWeight="Light" HorizontalAlignment="Center" VerticalAlignment="Center">
Text
</TextBlock>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Effect">
<Setter.Value>
<DropShadowEffect Direction="270" ShadowDepth="3" BlurRadius="14" Opacity="0.2"/>
</Setter.Value>
</Setter>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Button.Template>
</Button>
1条答案
按热度按时间jtoj6r0c1#
我发现视觉效果最好的解决方案是在底部创建一个边框,作为主按钮的兄弟。然后我添加了MouseEnter和MouseLeave事件处理程序,分别在其中添加和删除这个额外边框的DropShadow效果。它工作得很好,不会对原始按钮上的文本或图像造成明显的失真。