Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este ejemplo se muestra cómo especificar una posición personalizada para un Popup control cuando la propiedad Placement está establecida en Custom.
Ejemplo
Cuando se establece en Placement la Custom propiedad, Popup llama a una instancia definida del delegado CustomPopupPlacementCallback. Este delegado devuelve un conjunto de posibles puntos que son relativos a la esquina superior izquierda del área de destino y a la esquina superior izquierda de Popup. La colocación de Popup se realiza en el punto que ofrece la mejor visibilidad.
En el ejemplo siguiente se muestra cómo definir la posición de un Popup estableciendo la propiedad Placement a Custom. También se muestra cómo crear y asignar un CustomPopupPlacementCallback delegado para colocar el Popup. El delegado de devolución de llamada devuelve dos CustomPopupPlacement objetos. Si el Popup está oculto por un borde de pantalla en la primera posición, el Popup 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 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)
Para ver el ejemplo completo, consulte Ejemplo de ubicación del elemento emergente.
Consulte también
.NET Desktop feedback