1. ホーム
  2. wpf

[解決済み] オーバーレイコントロールを他のすべてのコントロールの上に配置するには?

2022-04-16 05:45:21

質問

あるコントロールを他のコントロールの上に表示させ、部分的にオーバーレイさせる必要があります。

どのように解決するのですか?

を使用している場合 Canvas または Grid を使用する場合は、上に配置するコントロールに高い位置の ZIndex .

から MSDN :

<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" WindowTitle="ZIndex Sample">
  <Canvas>
    <Rectangle Canvas.ZIndex="3" Width="100" Height="100" Canvas.Top="100" Canvas.Left="100" Fill="blue"/>
    <Rectangle Canvas.ZIndex="1" Width="100" Height="100" Canvas.Top="150" Canvas.Left="150" Fill="yellow"/>
    <Rectangle Canvas.ZIndex="2" Width="100" Height="100" Canvas.Top="200" Canvas.Left="200" Fill="green"/>

    <!-- Reverse the order to illustrate z-index property -->

    <Rectangle Canvas.ZIndex="1" Width="100" Height="100" Canvas.Top="300" Canvas.Left="200" Fill="green"/>
    <Rectangle Canvas.ZIndex="3" Width="100" Height="100" Canvas.Top="350" Canvas.Left="150" Fill="yellow"/>
    <Rectangle Canvas.ZIndex="2" Width="100" Height="100" Canvas.Top="400" Canvas.Left="100" Fill="blue"/>
  </Canvas>
</Page>

を指定しない場合は ZIndex の場合、パネルの子パネルは指定された順序でレンダリングされます(つまり、最後のものが一番上になります)。

もっと複雑なことをやりたい場合は ChildWindow は、Silverlightで実装されています。これは、半透明の背景とポップアップをあなたの RootVisual .