我創建了一個 WPF 專案,我需要在其中顯示兩個StackPanel像這樣的:

此螢屏是主網格的子級
StackPanel1 將在沒有任何寬度和高度交替的情況下顯示,我需要StackPanel在前一個StackPanel. 在這種情況下,使用Canvas和DockPanel對我沒有幫助。
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<StackPanel VerticalAlignment="Center" Grid.Row="0" x:Name="web1">
<wv2:WebView2 Name="MyWebView"
Height="800" >
</wv2:WebView2>
</StackPanel>
<StackPanel Grid.Row="0" x:Name="videoPlayerPanel">
<Canvas >
<local:VideoPlayer x:Name="videoPlayer" Background="AntiqueWhite"/>
</Canvas>
</StackPanel>
</Grid>
uj5u.com熱心網友回復:
我同意@thatguy 的回答,如果我們使用 zIndex,我們可以在 WPF 中重疊元素,但這里的問題與 webview2 和 mediaElement 有關。截至目前,webview2 不允許另一個元素位于頂部。所以目前還沒有辦法在 webview 之上顯示你的 mediaElement。請參閱此鏈接解決此問題:Webview2 問題
您可以嘗試使用 popup 顯示 mediaElement 但這會帶來其他問題我認為這是您現在問題的唯一答案。
uj5u.com熱心網友回復:
您StackPanel在Grid事物中定義s的順序。下一項顯示在前一項之上。在您的示例中,videoPlayerPanel將在 之上web1,因為它是在 之后定義的web1。有兩種選擇可以改變這種行為。
更改順序,定義
videoPlayerPanelbeforeweb1,顯示web1在上面videoPlayerPanel。<Grid> <Grid.RowDefinitions> <RowDefinition Height="*"/> </Grid.RowDefinitions> <StackPanel Grid.Row="0" x:Name="videoPlayerPanel"> <Canvas > <local:VideoPlayer x:Name="videoPlayer" Background="AntiqueWhite"/> </Canvas> </StackPanel> <StackPanel VerticalAlignment="Center" Grid.Row="0" x:Name="web1"> <wv2:WebView2 Name="MyWebView" Height="800" > </wv2:WebView2> </StackPanel> </Grid>通過
ZIndex為專案設定 a來明確定義 Z 順序。獲取或設定一個值,該值表示元素在 z 平面上出現的順序。[...] 給定元素的值越大,該元素就越有可能出現在前景中。
<Grid> <Grid.RowDefinitions> <RowDefinition Height="*"/> </Grid.RowDefinitions> <StackPanel VerticalAlignment="Center" Grid.Row="0" x:Name="web1" ZIndex="1"> <wv2:WebView2 Name="MyWebView" Height="800" > </wv2:WebView2> </StackPanel> <StackPanel Grid.Row="0" x:Name="videoPlayerPanel"> <Canvas > <local:VideoPlayer x:Name="videoPlayer" Background="AntiqueWhite"/> </Canvas> </StackPanel> </Grid>
默認ZIndex值為零,這解釋了為什么順序很Grid重要。
Children具有相同ZIndex值的集合成員按它們在可視化樹中出現的順序呈現。您可以通過迭代Children集合的成員來確定子項的索引位置。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/382135.html
