Gewusst wie: Angeben einer benutzerdefinierten Popup-Position

Dieses Beispiel zeigt, wie Sie eine benutzerdefinierte Position für ein Popup-Steuerelement festlegen, wenn die Placement-Eigenschaft auf Custom festgelegt ist.

Beispiel

Wenn die Placement-Eigenschaft auf Custom festgelegt ist, ruft Popup eine definierte Instanz des CustomPopupPlacementCallback-Delegaten auf. Dieser Delegat gibt eine Reihe möglicher Punkte zurück, die relativ zur linken oberen Ecke des Zielbereichs und zur linken oberen Ecke von Popup sind. Die Platzierung von Popup erfolgt an dem Punkt, der die beste Sichtbarkeit bietet.

Das folgende Beispiel zeigt, wie Sie die Position von Popup festlegen, indem Sie die Placement-Eigenschaft auf Custom festlegen. Außerdem wird gezeigt, wie Sie einen CustomPopupPlacementCallback-Delegaten erstellen und zuweisen, um Popup zu positionieren. Der Rückrufdelegat gibt zwei CustomPopupPlacement-Objekte zurück. Wenn Popup durch einen Bildschirmrand an der ersten Position verdeckt wird, wird Popup an der zweiten Position platziert.

 <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)

Das vollständige Beispiel finden Sie unter Beispiel für das Platzieren eines Popups.

Weitere Informationen