我有两个彼此重叠的边框。一个有 BorderThickness 但没有背景,另一个没有边框粗细但有背景。两个边框的 CornerRadius 都是 3。问题是其中一个边框的背景角从另一个边框的角后面伸出。
这是 XAML,第一个边框元素具有背景,名为 FocusVisual 的边框具有 BorderThickness。
<Grid x:Name="grid">
<Border Background="{TemplateBinding Background}"
CornerRadius="3">
<Grid>
<Border x:Name="MouseOverVisual"
Opacity="0"
Background="{StaticResource NuiFieldHoverBrush}"
CornerRadius="3" />
<Border>
<Grid>
<ScrollViewer x:Name="PART_ContentHost" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />
<ContentPresenter x:Name="PART_WatermarkHost"
Content="{TemplateBinding Watermark}"
ContentTemplate="{TemplateBinding WatermarkTemplate}"
VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
IsHitTestVisible="False"
Margin="{TemplateBinding Padding}"
Visibility="Collapsed"/>
</Grid>
</Border>
</Grid>
</Border>
<Border x:Name="FocusVisual"
Opacity="0"
BorderThickness="{TemplateBinding BorderThickness}"
BorderBrush="{StaticResource NuiFocusBrush}"
CornerRadius="3" />
</Grid>
CornerRadius 对 Border 对象的 Background 和 Border 具有不同的效果,这似乎是 WPF 中的一个错误。
我可以将 BorderThickness 添加到具有背景的边框并将 BorderBrush 设置为背景颜色,但这会导致该边框的子元素被 BorderThickness 推入。我可能可以通过重新排列元素来解决这个问题,但这有点痛苦,所以我想我会看看是否有人有更好的解决方法。