You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:无法在ScrollViewer上方正常显示UI元素

UWP ScrollViewer放大后遮挡上层UI元素问题

我尝试在ScrollViewer上方显示UI元素,本以为很简单却遇到了问题。原代码如下:

<Grid>
    <Button>A</Button>
    <ScrollViewer ZoomMode="Enabled" x:Name="Scroller">
        <Viewbox>
            <Rectangle Width="200" Height="200" Fill="White"/>
        </Viewbox>
    </ScrollViewer>
    <Button>B</Button>
</Grid>

但放大ScrollViewer时,它会显示在两个Button的上方,遮挡了按钮。我期望按钮始终保持在ScrollViewer的视觉上层,不受缩放影响。

解决方案

将需要保持在上层的UI元素放在独立的容器中,与ScrollViewer并列且位于布局顺序的后方,确保视觉层级始终在ScrollViewer之上。修改后的代码如下:

<Grid>
    <!-- 底层放置ScrollViewer -->
    <ScrollViewer ZoomMode="Enabled" x:Name="Scroller">
        <Viewbox>
            <Rectangle Width="200" Height="200" Fill="White"/>
        </Viewbox>
    </ScrollViewer>
    <!-- 上层放置按钮容器,确保始终在视觉最上方 -->
    <Grid>
        <Button>A</Button>
        <Button>B</Button>
    </Grid>
</Grid>

原因说明

ScrollViewer在缩放时,内部内容会通过RenderTransform进行视觉变换,其视觉范围会超出自身的布局边界。虽然Grid中后声明的元素本应处于上层,但ScrollViewer的变换会让其内容在视觉层覆盖其他元素。通过将按钮放在独立的上层容器中,可以彻底隔离视觉层级,避免被ScrollViewer的缩放内容遮挡。

内容的提问来源于stack exchange,提问作者Zev G

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 16:57:44