Compartir a través de


Cómo: Especificar una posición emergente personalizada

En este ejemplo se muestra cómo especificar una posición personalizada para un control Popup cuando la propiedad Placement está establecida en Custom.

Ejemplo

Cuando la propiedad Placement está establecida en Custom, Popup llama a una instancia definida del delegado CustomPopupPlacementCallback. Este delegado devuelve un conjunto de puntos posibles relativos a la esquina superior izquierda del área de destino y a la esquina superior izquierda de Popup. La colocación de Popup tiene lugar en el punto que proporciona la mejor visibilidad.

En el ejemplo siguiente se muestra cómo definir la posición de Popup estableciendo la propiedad Placement en Custom. También se muestra cómo crear y asignar un delegado CustomPopupPlacementCallback para colocar el control Popup. El delegado de devolución de llamada devuelve dos objetos CustomPopupPlacement. Si un borde de la pantalla oculta el control Popup en la primera posición, éste se coloca en la segunda posición.

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

Para obtener el ejemplo completo, vea Popup Placement Sample.

Vea también

Referencia

Popup

Conceptos

Información general sobre el control Popup

Otros recursos

Temas "Cómo..." sobre el control Popup