2013-08-20 16 views
5

Mam menu kontekstowe, które wyświetla się ręcznie, naciskając skrót klawiaturowy Ctrl +. Dlatego używam tej funkcji:Położenie menu kontekstowego

ContextMenu.IsOpen = true; 

Zadzwonię do tego w moim głównym oknie. Ale ma pewne dziwne efekty.

  1. Gdybym tylko nacisnąć Menu, klawisz zawsze pełen menu pojawi się na środku ekranu
  2. Gdybym ręcznie wywołać menu, to zawsze pojawia się w lewym górnym rogu.

moje menu jest to jedno:

<Window.ContextMenu> 
    <ContextMenu Placement="Center"> 
     <MenuItem IsCheckable="False" Name="item2" Click="MenuItem_Click" Header="{DynamicResource countDownNotificationOn}"/> 
    </ContextMenu> 
</Window.ContextMenu> 

pomocą umieszczania XAML powyższej pracy nie robi albo. Dlatego ustawiłem okno na

ContextMenuService.Placement="Center" 

Ale nie działa.

Odpowiedz

7

Musisz ustawić właściwość PlacementTarget z ContextMenu:

if (element.ContextMenu != null) 
{ 
    element.ContextMenu.PlacementTarget = element; 
    element.ContextMenu.IsOpen = true; 
} 

Jeżeli po tym, ContextMenu nadal nie jest umieszczony prawidłowo, można ustawić położenie za pomocą ContextMenu.HorizontalOffset i ContextMenu.VerticalOffset właściwości. Zajrzyj na strony ContextMenu.HorizontalOffset Property i ContextMenu.VerticalOffset Property na stronie MSDN, aby uzyskać więcej informacji.

+0

Dzięki, działa. Myślałem, że to wystarczy, gdybym umieścił umieszczenie w części XAML. – marcel

+0

Cieszę się, że mogłem pomóc. Proszę "zaznaczyć" to pytanie jako poprawną odpowiedź, jeśli pomogło ci rozwiązać problem. – Sheridan

Powiązane problemy