#

WPF: Popup Overlay Fenster, Element on Top
 
Wie kann man ein Element in XAML über andere Elemente hervorheben?
 
Lösung:
In XAML werden die Elemente von oben nach unten gezeichnet. Das heißt, dass alle Anzeige-Elemente, welche weiter unten stehen, die anderen UIElemente überlagern.
Dadurch werden die vorigen Anzeigelemente nicht mehr sichtbar.
 
Grid mit Rows und Columns
Wenn ich mich in einem Grid mit einer Row befinde und ein UIElement dort platziere, dann wird dieses immer nur innerhalb dieser Row gezeichnet. Alle überstehenden Bereiche eines Elements wie Rechteck, Panel, Textbox werden einfach nicht dargestellt und verschwinden in der folgenden Reihe.  Dabei spielt es keine Rolle, welchen ZIndex als Render-Ebenen Position man einem Framework-Element zuweist.
 
4 Möglichkeiten zum Überlagern.
manche Elemente können sich dennoch ausserhalb der andern Elemente bewegen.
   1) Menu Element
   2) Combobox Element
   3) Popup Element
   4) Window
 
Beim Menu, Controlbox und Popup Control kann man direkt die Werte zu einem Element zuweisen oder lesen.
Bei einem Window muss man Werte von und zum Windows übertragen.
 
 
Betrifft: WPF, UWP, ZIndex, Popup, Window, Combobox, Menu
Nicht über Panel.ZIndex
 
Folgende Darstellung zeigt ein Combobox Element als Dropdown-Liste innerhalb einer Grid-Reihe.
Man kann also innerhalb eines Combobox Element jedes andere UIElement, Framework Element in ein ListItem einbetten und somit als Überlagerung anzeigen
Allerdings muss man dann noch das Basiselement transparent schalten.

 
Combobox in XAML, Wpf

<ComboBox x:Name="menuFolder" HorizontalAlignment="Stretch" Visibility="Visible"
SelectedItem="."
>
<ComboBoxItem Content="Item #1" />
<ComboBoxItem Content="Item #2" />
<ComboBoxItem Content="Item #3" />
</ComboBox>

 
Popup in XAML, WPF

<Popup Name="popupFolders" IsOpen="False" MouseLeave="StackPanel_MouseLeave">
<ListBox>
<ListBoxItem>Listbox Item 1</ListBoxItem>
<ListBoxItem>Listbox Item 2</ListBoxItem>
<ListBoxItem>Listbox Item 3</ListBoxItem>
<ListBoxItem>Listbox Item 4</ListBoxItem>
<ListBoxItem>..</ListBoxItem>
<ListBoxItem>Listbox Item 10</ListBoxItem>
<ListBoxItem>Listbox Item 11</ListBoxItem>
</ListBox>
</Popup>

 
Darstellung als PopUp Element

 
Andere Elemente werden nicht nach aussen aufgezeichnet, auch wenn man die Panel.ZIndex anwendet.
In diesem Fall wird das Grid als UserControl innerhalb einer Grid.Row in dem MainWindows eingesetzt.
Dabei wird das Rectangle oder auch andere UIElemente einfach in der Row-Höhe abgeschnitten.

<Grid MouseEnter="StackPanel_MouseEnter" >
<StackPanel x:Name="pnlPath" Orientation="Horizontal" >
<Label x:Name="lblPath" Content="Path" VerticalAlignment="Top" />
<Image x:Name="imgFolder" Source="/wpf_Browse_Folders;component/_images/imgExpand_Right.png" VerticalAlignment="Top" />
</StackPanel>
<Rectangle>
..
</ Rectangle>
</Grid>

 
Mobile

.

yesmovies