InfoBar 悬浮于整个页面顶层

❓目标

在 WinUI3 中 InfoBar 悬浮于整个页面顶层,无论滚动与否都不动;解决Canvas.ZIndex设置无效的问题。


✅ 推荐方案:使用 Grid 实现浮动布局

Grid 做顶层容器

🔧 方案如下

<Page
    ...
    Loaded="OnLoaded"
    Unloaded="OnUnloaded">

    <Grid>
        <!-- 顶层 InfoBar -->
        <InfoBar x:Name="NoticeInfoBar"
                 MaxWidth="480"
                 Canvas.ZIndex="999"
                 Margin="10"
                 HorizontalAlignment="Center"
                 VerticalAlignment="Top">
            <i:Interaction.Behaviors>
                <behaviors:StackedNotificationsBehavior x:Name="NotificationQueue"/>
            </i:Interaction.Behaviors>
        </InfoBar>

        <!-- 内容区域 -->
        <ScrollView Margin="0"
                    VerticalScrollBarVisibility="Hidden">
            <StackPanel x:Name="ContentArea" Margin="0">
                <!-- 这里保留原来的控件层级(SettingsPageControl 等) -->
            </StackPanel>
        </ScrollView>
    </Grid>
</Page>

📝 补充说明

  1. Grid 是一种绝佳的布局容器,可以让你“叠放”多个控件(如 InfoBar + 页面内容)。
  2. InfoBar 设置 VerticalAlignment="Top" 就能固定在页面顶部,而不是随着内容一起滚动。
  3. 不再需要给 InfoBar 设置 Canvas.ZIndex,因为 Grid 默认后添加的元素会覆盖前面的。