2010-11-18 7 views
6

Quiero añadir una ventana emergente en clic de un botón en WPF. No quiero agregar código emergente en mi XAML. Tiene que ser código detrás.emergente de código subyacente en WPF que no trabaja (en cambio de tamaño y el cambio de ventanas)

Mi XAML es el siguiente ::

<Window x:Class="Test.Window1" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Title="Window1" Height="300" Width="300"> 
    <Grid> 
    <Button x:Name="button1" Click="button1_Click">Button</Button> 
    </Grid> 
</Window> 

Mi archivo XAML tiene un simple botón. Al hacer clic en el botón, intento ejecutar el siguiente código.

private void button1_Click(object sender, RoutedEventArgs e) 
    { 
     Button button = sender as Button; 

     Popup codePopup = new Popup(); 
     TextBlock popupText = new TextBlock(); 
     popupText.Text = "Popup Text"; 
     popupText.Background = Brushes.LightBlue; 
     popupText.Foreground = Brushes.Blue; 
     codePopup.Child = popupText; 

     codePopup.PlacementTarget = button; 
     codePopup.IsOpen = true; 

    } 

Pero ¿por qué es la ventana emergente no adhiriéndose a la ventana. Quiero decir que la ventana emergente se muestra incluso si cambio de ventana. Además, cuando cambiar el tamaño de la ventana, Popup ya no se coloca cerca del botón ??

Respuesta

4

tiene que indicarle a la ventana emergente que se muestre también.

codePopup.IsOpen = true; 

ver this blog para obtener un poco más de información.

[EDIT]
básicamente, su ventana emergente no está "ligado" (o "propiedad") por cualquier padre, que es independiente de cualquier otra ventana y/o control (etc.) Lamentablemente, no hay ninguna fácil forma de evitar esto.

debería descargar la Muestra emergente Posición de MSDN here.

El ejemplo de código utiliza la CustomPopupPlacement clase con un objeto Rect, y se une a desplazamientos horizontal y vertical para mover la ventana emergente.

+0

He agregado codePopup.IsOpen = true; Gracias, funciona! Pero ¿por qué la ventana emergente no se une a la ventana? Quiero decir que la ventana emergente se muestra incluso si cambio de ventana. Además, cuando cambio el tamaño de la ventana, ¿Popup ya no está cerca del botón? – GuruC

+0

Muchas gracias :) – GuruC

+0

@GuruC, ¿alguna vez descubrió cómo crear Popup mediante programación pero tiene que enrutarse correctamente para que la ventana emergente se cierre al hacer clic fuera de ella? – t9mike

2

Si desea que la ventana emergente se cierre automáticamente al hacer clic fuera de ella, configure codePopup.StaysOpen = false. De modo que se cerrará cuando haga clic fuera de ella.

Cuestiones relacionadas