2011-09-06 15 views
5

Estoy usando un control WPF Popup. Quiero que aparezca dentro de la ventana de mi aplicación, anclado en la esquina inferior derecha de la ventana. La altura real y el ancho de la ventana emergente cambiarán según el mensaje que se muestra.¿Cómo hago que aparezca una ventana emergente de WPF en la esquina inferior derecha de una aplicación?

Si es importante, el contenido de la ventana emergente es un borde, envuelve un StackPanel y contiene varios TextBlocks.

Gracias por cualquier ayuda.

Respuesta

0

Esto es bastante complicado, y no hay una respuesta simple. En su pregunta, usted Estado:

La altura real y la anchura de la ventana emergente cambiarán dependiendo del mensaje que se está mostrando.

No debería preocuparse, este es el comportamiento predeterminado del control WPF Popup.

Las medidas para garantizar las posiciones que desea ser son:

  1. Establecer la PlacementTarget a la ventana de la aplicación
  2. El emergente será colocado usando relativa en lugar de la absoluta, debido a la posición de partida es siempre la parte superior izquierda. Pero la ubicación exacta también es relativa al borde de su aplicación, esto significa que debe usar una ubicación personalizada.

Para obtener más información acerca del uso de la ubicación personalizada de emergente, ver:

How to: Specify a Custom Popup Position

2

que acabo de hacer algo como esto, y no es realmente tan difícil, pero sí requiere la colocación personalizada de su emergente . Cuando declara su ventana emergente simplemente establece la propiedad PlacementMode en Custom, luego establezca la propiedad CustomPopupPlacementCallback en el método que desea usar.

this.trayPopup.CustomPopupPlacementCallback = GetPopupPlacement; 

private static CustomPopupPlacement[] GetPopupPlacement(Size popupSize, Size targetSize, Point offset) 
{ 
    var point = SystemParameters.WorkArea.BottomRight; 
    point.Y = point.Y - popupSize.Height; 
    return new[] { new CustomPopupPlacement(point, PopupPrimaryAxis.Horizontal) }; 
} 
+0

Este Anclas de la ventana emergente en la esquina inferior derecha de la pantalla que no es necesariamente la esquina inferior derecha de la ventana. – sebingel

4

Uso PlacementTarget, Colocación = la izquierda, horizontal/VerticalOffset

<Popup IsOpen="{Binding ElementName=togglebutton, Path=IsChecked, Mode=TwoWay}" 
     PlacementTarget="{Binding ElementName=togglebutton}" 
     Placement="Left" 
     HorizontalOffset="{Binding ActualWidth, ElementName=togglebutton}" 
     VerticalOffset="{Binding ActualHeight, ElementName=togglebutton}"> 
Cuestiones relacionadas