Delen via


Procedure: Een aangepaste pop-uppositie opgeven

In dit voorbeeld ziet u hoe u een aangepaste positie voor een Popup besturingselement opgeeft wanneer de eigenschap Placement is ingesteld op Custom.

Voorbeeld

Wanneer de eigenschap Placement is ingesteld op Custom, roept de Popup een gedefinieerd exemplaar van de CustomPopupPlacementCallback gedelegeerde aan. Deze gemachtigde retourneert een set mogelijke punten die relatief zijn ten opzichte van de linkerbovenhoek van het doelgebied en de linkerbovenhoek van het Popup. De Popup plaatsing vindt plaats op het punt dat de beste zichtbaarheid biedt.

In het volgende voorbeeld ziet u hoe u de positie van een Popup definieert door de eigenschap Placement in te stellen op Custom. Ook ziet u hoe u een CustomPopupPlacementCallback gedelegeerde maakt en toewijst om de Popupte plaatsen. De callback-delegate geeft twee CustomPopupPlacement objecten terug. Als de Popup wordt verborgen door een schermrand op de eerste positie, wordt de Popup op de tweede positie geplaatst.

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

Voor het volledige voorbeeld, zie Pop-up Plaatsingsvoorbeeld.

Zie ook