Saya perlu membuat kontrol muncul di atas semua kontrol lain, sehingga sebagian akan overlay.
166
Jika Anda menggunakan Canvas
atau Grid
dalam tata letak Anda, berikan kontrol untuk diletakkan di atas yang lebih tinggi ZIndex
.
Dari 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>
Jika Anda tidak menentukan ZIndex
, anak-anak panel diberikan sesuai urutan yang ditentukan (yaitu yang terakhir di atas).
Jika Anda ingin melakukan sesuatu yang lebih rumit, Anda dapat melihat bagaimana ChildWindow
penerapannya di Silverlight. Itu melapisi latar semi-transparan dan popup seluruh Anda RootVisual
.
Robert Rossney memiliki solusi yang bagus. Inilah solusi alternatif yang pernah saya gunakan di masa lalu yang memisahkan "Hamparan" dari konten lainnya. Solusi ini memanfaatkan properti terlampir
Panel.ZIndex
untuk menempatkan "Hamparan" di atas segalanya. Anda dapat mengatur Visibilitas "Hamparan" dalam kode atau menggunakan aDataTrigger
.sumber
Kontrol di sel yang sama dari Grid diberikan kembali ke depan. Jadi cara sederhana untuk meletakkan satu kontrol di atas yang lain adalah dengan meletakkannya di sel yang sama.
Berikut ini adalah contoh yang berguna, yang memunculkan panel yang menonaktifkan segala sesuatu dalam tampilan (yaitu kontrol pengguna) dengan pesan sibuk saat tugas jangka panjang dijalankan (yaitu saat
BusyMessage
properti terikat bukan nol):sumber
Letakkan kontrol yang ingin Anda bawa ke depan di akhir kode xaml Anda. Yaitu
sumber
Ini adalah fungsi umum Adorners di WPF. Penghias biasanya muncul di atas semua kontrol lain, tetapi jawaban lain yang menyebutkan z-order mungkin lebih sesuai dengan kasus Anda.
sumber
sumber