2017-01-17 5 views
0

Ich versuche, ein Popup auf einen Button klicken, ich erreiche das gewünschte Ergebnis mit Popup-Steuerelement, aber das Problem, das ich gegenüberstelle, ist die Platzierung. Während Popup geöffnet ist und die Bildschirmgröße geändert wird, bleibt das Popup an der gleichen Stelle und das sieht hässlich aus. Haben Sie eine Idee, wie Sie die Popup-Platzierung entsprechend der Bildschirmgröße ändern können? Der Code-Snippet wird folgt:Adjust WPF Popup-Position, wenn Window Size geändert wird

<Popup x:Name="AdvancedFlyout" IsOpen="{Binding FlyoutVisibility}" Placement="Left" HorizontalOffset="{Binding ActualWidth,ElementName=btnAdvanced}" VerticalOffset="{Binding ActualHeight,ElementName=btnAdvanced}"> 

Antwort

0

Sie werden auf einige Veranstaltungen haben anschließen zu können manuell den Code schreiben, Ihre Popup nach dem Ändern der Bildgröße zu bewegen. Sie können direkt an SystemParameters.WorkArea.PrimaryScreenWidth binden, wenn Sie möchten, ist das Problem, dass beim Öffnen des Popup, die Position berechnet wird und das Popup so platziert, auch wenn Sie Bindings das Ding gerade beim Öffnen gesetzt setzen.

"{DynamicResource {x:Static SystemParameters.MaximizedPrimaryScreenWidthKey}}" 

hook up der Veranstaltung

yourWindow.SizeChanged += (o, args) => 
          { 
           YourPopup.HorizontalOffset = SystemParameters.FullPrimaryScreenWidth/2 - YourPopup.Width/2; 
           YourPopup.VerticalOffset = SystemParameters.FullPrimaryScreenHeight/2 - YourPopup.Height/2; 
          }; 

Wenn Sie in Bildschirmgröße verdrahten wan geändert Ereignisse im Handler nur einige Code wie folgt schreiben:

 YourPopup.HorizontalOffset = SystemParameters.FullPrimaryScreenWidth/2 - YourPopup.Width/2; 
     YourPopup.VerticalOffset = SystemParameters.FullPrimaryScreenHeight/2 - YourPopup.Height/2; 

Dies wird in der Mitte platzieren Bildschirm. Viel Glück und ich hoffe, das hilft. Bitte markieren Sie die Antwort, wenn Ihnen das hilft.

Verwandte Themen