我有一个简单的 WPF (4.0) 示例,旨在展示我在另一个项目中面临的陌生感。该示例尝试显示一些我使用 Border 元素的矩形形状。下面是标记:
<Window x:Class="WpfApplication1.Window3"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window3" Height="1000" Width="1500">
<Window.Resources>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0" x:Key="grad">
<LinearGradientBrush.GradientStops>
<GradientStop Color="Black" Offset="0" />
<GradientStop Color="White" Offset="1" />
</LinearGradientBrush.GradientStops>
</LinearGradientBrush>
<Style TargetType="Border">
<Setter Property="Background" Value="{StaticResource grad}" />
<Setter Property="HorizontalAlignment" Value="Left" />
<Setter Property="VerticalAlignment" Value="Top" />
<Setter Property="Width" Value="100" />
<Setter Property="Height" Value="100" />
<Setter Property="BorderThickness" Value="1" />
</Style>
</Window.Resources>
<StackPanel Orientation="Horizontal">
<Border />
<Border />
<Border />
</StackPanel>
</Window>
在设计器中,这看起来与我想象的完全一样:屏幕左上角的 3 个正方形彼此相邻。但是在运行时只显示 1 并且窗口的其余部分是黑色的。似乎窗口的内容本身受布局属性的影响。如果我使用 Rectangles 而不是 Borders,则示例工作得很好。谁能解释一下为什么我会看到这种行为(可能与继承有关)?设计时视图和运行时视图之间的区别基本上是VS错误吗?