滚动查看器外部的 WPF 元素将忽略 ZIndex
本文关键字:元素 ZIndex WPF 外部 滚动 | 更新日期: 2023-09-27 17:51:16
如果我在 WPF 滚动查看器的边界之外转换了一个元素,我似乎无法在顶部呈现它。
请考虑以下示例:
<Window x:Class="ScrollViewerContentTransform.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<Border Grid.Row="0" Background="Blue" Panel.ZIndex="1"/>
<ScrollViewer Grid.Row="1" Panel.ZIndex="2">
<Grid>
<Border Width="30" Height="30" Background="Red">
<Border.RenderTransform>
<TranslateTransform Y="-80"/>
</Border.RenderTransform>
</Border>
</Grid>
</ScrollViewer>
</Grid>
</Window>
即使我设置了 zorder,红色边框仍将隐藏在蓝色边框下。
http://imm.io/Sm2Q
如果我用网格替换滚动查看器,这将根据需要显示。关于如何在使用滚动查看器时让元素显示在顶部的任何提示?
据我所知,使用 ScrollViewer 时不可能删除内容剪辑,因为 ScrollViewer 控件模板将生成一个ScrollContentPresenter
,该又具有以下 GetLayoutClip
方法的实现:
protected override Geometry GetLayoutClip(Size layoutSlotSize) {
return new RectangleGeometry(new Rect(base.RenderSize));
}
此类Sealed
,因此无法从中派生以重写此方法。因此,请考虑从布局中删除滚动查看器。