2011-09-06 20 views
5

Używam formantu podręcznego WPF. Chcę, aby pojawił się w moim oknie aplikacji, zakotwiczonym w prawym dolnym rogu okna. Rzeczywista wysokość i szerokość wyskakującego okienka zmieni się w zależności od wyświetlanego komunikatu.Jak utworzyć wyskakujące okno WPF w prawym dolnym rogu aplikacji?

Jeśli ma to znaczenie, zawartość wyskakującego okienka to Obramowanie, owijając StackPanel, przechowując wiele blokad tekstowych.

Dziękuję za pomoc.

Odpowiedz

0

Jest to dość podstępne i nie ma prostej odpowiedzi. Na pytanie, stwierdzić:

Rzeczywista wysokość i szerokość popup będzie się zmieniać w zależności od komunikatu który jest wyświetlany.

Nie powinieneś się martwić, jest to domyślne zachowanie kontrolki Popup WPF.

kroki w celu zapewnienia stanowisk, które mają być to:

  1. Ustaw PlacementTarget do okna aplikacji
  2. Wyskakujących zostaną umieszczone przy użyciu względny zamiast absolutna, ponieważ pozycja wyjściowa jest zawsze w lewym górnym rogu. Ale dokładne umieszczenie jest również zależne od krawędzi aplikacji, co oznacza, że ​​musisz użyć niestandardowego miejsca docelowego.

Aby uzyskać więcej informacji na temat korzystania z niestandardowych umieszczenie Podręczne, patrz:

How to: Specify a Custom Popup Position

2

po prostu zrobił coś takiego, i to naprawdę nie jest takie trudne, ale wymaga niestandardowego umieszczenie swojej popup . Po zadeklarowaniu okna wyskakującego ustaw właściwość PlacementMode na wartość Niestandardowa, a następnie ustaw właściwość CustomPopupPlacementCallback na metodę, której chcesz użyć.

this.trayPopup.CustomPopupPlacementCallback = GetPopupPlacement; 

private static CustomPopupPlacement[] GetPopupPlacement(Size popupSize, Size targetSize, Point offset) 
{ 
    var point = SystemParameters.WorkArea.BottomRight; 
    point.Y = point.Y - popupSize.Height; 
    return new[] { new CustomPopupPlacement(point, PopupPrimaryAxis.Horizontal) }; 
} 
+0

Ten kotwic okienko w prawym dolnym rogu ekranu, który nie jest koniecznie prawy dolny róg okna. – sebingel

4

Zastosowanie PlacementTarget, Umieszczenie = Lewo, pozioma/VerticalOffset

<Popup IsOpen="{Binding ElementName=togglebutton, Path=IsChecked, Mode=TwoWay}" 
     PlacementTarget="{Binding ElementName=togglebutton}" 
     Placement="Left" 
     HorizontalOffset="{Binding ActualWidth, ElementName=togglebutton}" 
     VerticalOffset="{Binding ActualHeight, ElementName=togglebutton}"> 
Powiązane problemy