Projekt-Anfragen: Tel: 07022/9319004 info@CodeDocu.de Software Entwicklung in C# WPF Asp.Net Core Vba Excel Word SQL-Server EF Linq, UWP Net
#

WPF Popup Position: Unten, Links nach Rechts
 
Wie plaziert man das Popup unterhalb eines UIElements, aber von links nach rechts.
 
Problem:
Wenn man ein WPF Popup mit der Einstellung Placement=Bottom unterhalb eines UIElements anordnet,
dann wird das Popup selbst zwar unterhalb des Bereichs plaziert, aber die Größe dehnt sich von Rechts nach Links aus.
Beim Placement=Links wird das Popup zwar von Links-nach-Rechts geöffnet, aber dafür erscheint es dann rechts oben am UIElemente.
 
Lösung:
Das Popup soll unterhalb des UIElements dargestellt werden, aber von links nach rechts unten ausgedehnt werden.

 
Lösung per C# Code
Man muss vor dem Öffnen den Horizontalen und Vertikalen Offset dem Popup Zuweisen.
Dabei ist zu achten, dass der Horizontale Offset von Rechts nach Links gehen muss, also negativ sein muss.

//< open Popup >
popupFolders.VerticalOffset = BaseControl.ActualHeight;
popupFolders.HorizontalOffset = - BaseControl.ActualWidth;
popupFolders.IsOpen = true;
//</ open Popup >

 
 
XAML Code des Bereichs. Hier innerhalb eines UserControls

<UserControl
.. >
 
<Grid Name="BaseControl" >

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

</Rectangle>

<Popup Name="popupFolders" IsOpen="False" MouseLeave="Popup_MouseLeave"
PlacementTarget="{Binding ElementName=pnlPath}"
Placement="Left"
>
<ListBox Name="lstFolders">
</ListBox>
</Popup>

</Grid>

</UserControl>

 
 
Position Bottom:
Popup Placement=Bottom aber mit Ausdehnung nach links

 
XAML zu diesem Beipiel:

<Popup Name="popupFolders" IsOpen="False" MouseLeave="Popup_MouseLeave"
Placement="Bottom" PlacementTarget ="{Binding ElementName=BaseControl}" >
<ListBox Name="lstFolders">
</ListBox>
</Popup>

 
 
Das hinzufügen des HorizontalAlignment für das Popup ist erfolglos

HorizontalAlignment="Left"

 
Position Left
Ohne die script Anpassung positioniert sich die Angabe Position=Left nach rechts oben bei einem UIElement
Mobile
»
WPF Uhrzeit Elemente oder DateTime-Picker
»
WPF: Scollbar anzeigen
»
WPF: Column oder Row ermitteln
»
WPF: SelectedItem aus DataGrid auslesen mit Anonyous Type auf Dyamic Type
»
WPF: Elemente zu breit, rand abgeschnitten
»
Gelöst: System.InvalidCastException HResult=0x80004002 SelectedItem SelectedValue
»
WPF Kurze Zeit in Grid Spalten anpassen. Anzeige Zeit Format
»
WPF: Combobox Selected Value ermitteln und zuweisen
»
WPF: Combobox füllen
»
WPF: Hintergrundfarbe einer Spalte an Daten binden

.

Jobs, Projekte, Angebote für Freiberufler, Selbstständig an Info@CodeDocu.de