Jak określić niestandardowe położenie okna podręcznego
W tym przykładzie pokazano, jak określić pozycję niestandardową kontrolki Popup , gdy Placement właściwość jest ustawiona na Customwartość .
Przykład
Placement Gdy właściwość jest ustawiona na Custom, Popup wywołuje zdefiniowane wystąpienie delegataCustomPopupPlacementCallback. Ten delegat zwraca zestaw możliwych punktów względem lewego górnego rogu obszaru docelowego i lewego górnego rogu obiektu Popup. Umieszczanie Popup odbywa się w momencie, w którym zapewnia najlepszą widoczność.
W poniższym przykładzie pokazano, jak zdefiniować położenie obiektu Popup przez ustawienie Placement właściwości na Custom. Pokazano również, jak utworzyć i przypisać delegata CustomPopupPlacementCallback w celu położenia elementu Popup. Delegat wywołania zwrotnego zwraca dwa CustomPopupPlacement obiekty. Popup Jeśli krawędź ekranu jest ukryta na pierwszej pozycji, Popup zostanie umieszczona na drugiej pozycji.
<Popup Name="popup1"
PlacementTarget ="{Binding ElementName=myButton}"
Placement="Custom">
<TextBlock Height="60" Width="200"
Background="LightGray"
TextWrapping="Wrap">Popup positioned by using
CustomPopupPlacement callback delegate</TextBlock>
</Popup>
public CustomPopupPlacement[] placePopup(Size popupSize,
Size targetSize,
Point offset)
{
CustomPopupPlacement placement1 =
new CustomPopupPlacement(new Point(-50, 100), PopupPrimaryAxis.Vertical);
CustomPopupPlacement placement2 =
new CustomPopupPlacement(new Point(10, 20), PopupPrimaryAxis.Horizontal);
CustomPopupPlacement[] ttplaces =
new CustomPopupPlacement[] { placement1, placement2 };
return ttplaces;
}
Public Function placePopup(ByVal popupSize As Size, ByVal targetSize As Size, ByVal offset As Point) As CustomPopupPlacement()
Dim placement1 As New CustomPopupPlacement(New Point(-50, 100), PopupPrimaryAxis.Vertical)
Dim placement2 As New CustomPopupPlacement(New Point(10, 20), PopupPrimaryAxis.Horizontal)
Dim ttplaces() As CustomPopupPlacement = { placement1, placement2 }
Return ttplaces
End Function
popup1.CustomPopupPlacementCallback =
new CustomPopupPlacementCallback(placePopup);
popup1.CustomPopupPlacementCallback = New CustomPopupPlacementCallback(AddressOf placePopup)
Aby zapoznać się z kompletnym przykładem, zobacz Przykład umieszczania w oknie podręcznym.
Zobacz też
.NET Desktop feedback