如何在 UWP 中将 UI 元素始终置于顶部
How to put UI Element always on the top in UWP
我正在开发 UWP 应用程序,它的浏览量很少,只有横幅广告浏览量。我希望横幅广告视图始终位于顶部,不应隐藏在任何其他元素后面。
我的设置:
我有一个堆栈面板,其中有其他元素,横幅是以编程方式添加的,如下面的代码片段所示。
<Grid>
<StackPanel x:Name="stckPnl" Orientation="Vertical" Margin="0,0,0,0" HorizontalAlignment="Left" VerticalAlignment="Top">
<TextBox x:Name="plcTextbox" Header="PLACEMENT:" Text="123456" TextAlignment="Center"
Margin="0,40,0,0" Height="60" Width="240" HorizontalAlignment="Left" VerticalAlignment="Top"/>
<Button x:Name="loadBannerBtn" Content="Load Banner" Click="LoadBanner"
Margin="0,40,0,0" Height="40" Width="240" HorizontalAlignment="Left" VerticalAlignment="Top"/>
<ProgressRing x:Name="LoadingIndicator"
Margin="0,40,0,0" Height="40" Width="240" Visibility="Collapsed" />
</StackPanel>
<Rectangle Width="400" Height="400" Fill="Chocolate" Opacity="0.5" Canvas.ZIndex="40" Margin="20"/>
</Grid>
我正在添加如下横幅
_banner = new Banner(plcTextbox.Text.Trim(), AdSize.Banner320x50);
_banner.Margin = new Thickness(0, 40, 0, 0);
_banner.LoadAd();
Canvas.SetZIndex(_banner, 30000);
stckPnl.Children.Add(_banner);
到目前为止我尝试了什么
我曾尝试在 canvas 上设置 z-index,例如 Canvas.SetZIndex(_banner, 30000);
,但它不起作用。即使在添加 z-index 之后,semi-transparent 矩形仍显示在顶部,横幅隐藏在它后面。当我在 semi-transparent 矩形的堆栈面板 > z-index 上添加 z-index 时,只有横幅显示在顶部。
无论 parent 还是 parent 的兄弟姐妹,我应该怎么做才能让横幅始终位于顶部?
z-index 仅适用于面板元素内的元素 - 因此,即使您设置 30000,它也仅适用于添加它的 StackPanel
。由于 Rectangle
是在 StackPanel
之后添加的,它将继续位于顶部。
您的解决方案是在 StackPanel
之前添加 Rectangle
或从 StackPanel
中取出 Banner
对象
Grid
控件按照在 XAML 中声明的升序将子元素放在另一个元素之上。
你把 Rectangle
放在 之后 StackPanel
... 这意味着 StackPanel
本身将永远落后于 Rectangle
.
此致
我正在开发 UWP 应用程序,它的浏览量很少,只有横幅广告浏览量。我希望横幅广告视图始终位于顶部,不应隐藏在任何其他元素后面。
我的设置: 我有一个堆栈面板,其中有其他元素,横幅是以编程方式添加的,如下面的代码片段所示。
<Grid>
<StackPanel x:Name="stckPnl" Orientation="Vertical" Margin="0,0,0,0" HorizontalAlignment="Left" VerticalAlignment="Top">
<TextBox x:Name="plcTextbox" Header="PLACEMENT:" Text="123456" TextAlignment="Center"
Margin="0,40,0,0" Height="60" Width="240" HorizontalAlignment="Left" VerticalAlignment="Top"/>
<Button x:Name="loadBannerBtn" Content="Load Banner" Click="LoadBanner"
Margin="0,40,0,0" Height="40" Width="240" HorizontalAlignment="Left" VerticalAlignment="Top"/>
<ProgressRing x:Name="LoadingIndicator"
Margin="0,40,0,0" Height="40" Width="240" Visibility="Collapsed" />
</StackPanel>
<Rectangle Width="400" Height="400" Fill="Chocolate" Opacity="0.5" Canvas.ZIndex="40" Margin="20"/>
</Grid>
我正在添加如下横幅
_banner = new Banner(plcTextbox.Text.Trim(), AdSize.Banner320x50);
_banner.Margin = new Thickness(0, 40, 0, 0);
_banner.LoadAd();
Canvas.SetZIndex(_banner, 30000);
stckPnl.Children.Add(_banner);
到目前为止我尝试了什么
我曾尝试在 canvas 上设置 z-index,例如 Canvas.SetZIndex(_banner, 30000);
,但它不起作用。即使在添加 z-index 之后,semi-transparent 矩形仍显示在顶部,横幅隐藏在它后面。当我在 semi-transparent 矩形的堆栈面板 > z-index 上添加 z-index 时,只有横幅显示在顶部。
无论 parent 还是 parent 的兄弟姐妹,我应该怎么做才能让横幅始终位于顶部?
z-index 仅适用于面板元素内的元素 - 因此,即使您设置 30000,它也仅适用于添加它的 StackPanel
。由于 Rectangle
是在 StackPanel
之后添加的,它将继续位于顶部。
您的解决方案是在 StackPanel
之前添加 Rectangle
或从 StackPanel
Banner
对象
Grid
控件按照在 XAML 中声明的升序将子元素放在另一个元素之上。
你把 Rectangle
放在 之后 StackPanel
... 这意味着 StackPanel
本身将永远落后于 Rectangle
.
此致