Condividi tramite


Procedura: specificare una posizione personalizzata per un controllo Popup

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

Esempio

Quando la proprietà Placement è impostata su Custom, l'oggetto Popup chiama un'istanza definita del delegato CustomPopupPlacementCallback. Questo delegato restituisce un insieme di possibili punti relativi all'angolo superiore sinistro dell'area di destinazione e all'angolo superiore sinistro dell'oggetto Popup. L'oggetto Popup viene posizionato nel punto che offre la migliore visibilità.

Nell'esempio riportato di seguito viene illustrato come definire la posizione di un oggetto Popup impostando la proprietà Placement su Custom. Viene inoltre illustrato come creare e assegnare un delegato CustomPopupPlacementCallback per posizionare l'oggetto Popup. Il delegato di callback restituisce due oggetti CustomPopupPlacement. Se l'oggetto Popup è nascosto da un bordo dello schermo nella prima posizione, l'oggetto Popup viene collocato 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 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
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;
}
            popup1.CustomPopupPlacementCallback = New CustomPopupPlacementCallback(AddressOf placePopup)
popup1.CustomPopupPlacementCallback =
    new CustomPopupPlacementCallback(placePopup);

Per l'esempio completo, vedere Esempio di posizionamento di un oggetto Popup (la pagina potrebbe essere in inglese).

Vedere anche

Riferimenti

Popup

Concetti

Cenni preliminari sul controllo Popup

Altre risorse

Procedure relative ai popup