Procedura: specificare una posizione personalizzata per un controllo Popup

In questo esempio viene illustrato come specificare una posizione personalizzata per un Popup controllo quando la Placement proprietà è impostata su Custom.

Esempio

Quando la Placement proprietà è impostata su Custom, Popup chiama un'istanza definita del CustomPopupPlacementCallback delegato. Questo delegato restituisce un set di possibili punti relativi all'angolo superiore sinistro dell'area di destinazione e all'angolo superiore sinistro dell'oggetto Popup. Il Popup posizionamento si verifica nel punto in cui viene fornita la visibilità migliore.

Nell'esempio seguente viene illustrato come definire la posizione di un Popup impostando la Placement proprietà su Custom. Illustra anche come creare e assegnare un CustomPopupPlacementCallback delegato per posizionare .Popup Il delegato di callback restituisce due CustomPopupPlacement oggetti. Se l'oggetto è nascosto da un bordo dello schermo alla prima posizione, l'oggetto PopupPopup viene posizionato nella seconda posizione.

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

Per l'esempio completo, vedere Esempio di posizionamento popup.

Vedi anche