Muszę sprawić, by kontrolka pojawiła się nad wszystkimi innymi kontrolkami, więc częściowo je nałoży.
166
Jeśli używasz Canvas
lub Grid
w swoim układzie, ustaw wyżej kontrolkę, która ma być umieszczona na górze ZIndex
.
Z 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>
Jeśli nie określisz ZIndex
, elementy podrzędne panelu są renderowane w kolejności, w jakiej zostały określone (tj. Ostatnie na górze).
Jeśli chcesz zrobić coś bardziej skomplikowanego, możesz zobaczyć, jak ChildWindow
jest zaimplementowany w Silverlight. Nakłada półprzezroczyste tło i wyskakujące okienko na całą zawartość RootVisual
.
Robert Rossney ma dobre rozwiązanie. Oto alternatywne rozwiązanie, z którego korzystałem w przeszłości, które oddziela „Nakładkę” od reszty zawartości. To rozwiązanie wykorzystuje dołączoną właściwość,
Panel.ZIndex
aby umieścić „Nakładkę” na wszystkim innym. Możesz ustawić widoczność „Nakładki” w kodzie lub użyć plikuDataTrigger
.źródło
Kontrolki w tej samej komórce siatki są renderowane od tyłu do przodu. Tak więc prostym sposobem na umieszczenie jednej kontrolki na drugiej jest umieszczenie jej w tej samej komórce.
Oto przydatny przykład, który wyświetla panel, który wyłącza wszystko w widoku (tj. Element sterujący użytkownika) z komunikatem o zajętości podczas wykonywania długotrwałego zadania (tj. Gdy
BusyMessage
właściwość powiązana nie jest pusta):źródło
Umieść kontrolkę, którą chcesz przenieść na pierwszy plan na końcu kodu XAML. To znaczy
źródło
Jest to typowa funkcja Adorners w WPF. Ozdoby zwykle pojawiają się nad wszystkimi innymi kontrolkami, ale inne odpowiedzi, które wspominają o kolejności z, mogą lepiej pasować do twojego przypadku.
źródło
źródło