我试图理解为什么在减小主窗口的宽度时边框元素会被剪裁。请看下面的代码块。
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="300" Width="500" Name="MainWin">
<Grid>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<Border Background="Blue" Grid.Row="0" BorderBrush="Black" Width="{Binding ElementName=MainWin, Path=Width}" />
<Grid Grid.Row="1" Margin="0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="150" />
<ColumnDefinition Width="150" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<StackPanel Grid.Column="0" Background="Black">
<Border Background="White" Width="150" Height="150" BorderBrush="Black" BorderThickness="2"
Margin="0,-100,0,0">
<TextBlock Text="{Binding ElementName=MainWin, Path=Width}" FontSize="14" FontWeight="Bold"
HorizontalAlignment="Center"
VerticalAlignment="Center" />
</Border>
</StackPanel>
<StackPanel Grid.Column="1" Background="Red" />
<StackPanel Grid.Column="2" Background="Yellow" />
</Grid>
</Grid>
</Window>
以下是原始窗口宽度中出现的边框:
未调整大小的窗口
如您所见,由于上边距为负,在本例中为 -100,因此边框显示在其容器之外。这是我期望的边界。但是,当我减小主窗口宽度以到达红色矩形的右边缘时,边框的外部部分会被剪裁。
调整大小的窗口
我试图将此边框元素放在自定义 StackPanel 中,该 StackPanel 覆盖了 ArrangeOverride、MeasureOverride 和 GetLayoutClip 方法,但不幸的是,在调整主窗口大小时不会调用这些方法。
如果有人可以向我解释原因是什么以及如何解决此问题,我将不胜感激。非常感谢。