虽然有点思考,但我发现了一些(对我来说)XAML中Border
元素的意外行为。也就是说,当一边的BorderThickness
设置为0时,相邻边上的边框似乎会溢出。
为了证明我做了一个快速的样本
<Page
x:Class="TestApp.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d">
<Canvas>
<Rectangle Height="20" Width="300" Fill="Blue" Margin="50, 30, 0 ,0" />
<Border Height="20" Width="300" Background="Green" Margin="50, 50, 0 ,0" BorderBrush="Red" BorderThickness="0,0,0,4" />
</Canvas>
</Page>
这会产生以下视觉表示(放大以获得更好的可见性)
如您所见,红色边框与实际Border
元素重叠1px。蓝色Rectangle
用于验证它不是绿色背景,但红色边框不合适。
现在有趣的部分。当我编辑代码BorderThickness="4,0,0,4"
时,左溢出消失了,但顶部有一个溢出。
现在回答我的问题:
Border
的预期行为?Rectangle
的情况下避免这种情况,从而进一步增加复杂性?