2010-09-20 10 views
5

Tengo una ventana primaria que inicia una ventana secundaria, después de cerrar alguna selección/operación en la ventana secundaria y enviar información a la ventana primaria (una clase personalizada) objeto), ¿cuál es la mejor manera de lograr esto en WPF utilizando las características proporcionadas por WPF?Ventana de comunicación entre padres e hijos en wpf

Respuesta

5

usted tiene muchas opciones:

  • Se puede usar un evento personalizado en su ventana secundaria que la ventana padre escucha
  • Se podría definir un delegado en la ventana secundaria que hace referencia a un método en el que el padre ventana
  • Puede cambiar el constructor para la ventana secundaria para tomar una referencia a la ventana principal y llamar a un método en la ventana primaria usando esa referencia
  • Puede usar la clase VisualTreeHelper para obtener la ventana padre y llamar a am é todo en que la referencia
-1

Extraído de this link:

La manera más fácil que he encontrado para pasar datos desde una ventana secundaria a una ventana padre es el uso de una amplia propiedad de aplicación. Esta propiedad es un objeto, y no es la forma más elegante para pasar datos de una ventana secundaria a un elemento primario, pero es la menor cantidad de programación. La mejor forma de hacer esto es usar las propiedades de acceso get y set .

Crear una ventana principal (mainWindow) Crear una ventana secundaria (en este caso, contraseña)

En la ventana principal, la ventana secundaria se debe demostrar, por ejemplo, dentro de un botón clic. Esta ventana tendría un botón para hacer algo, en este caso , es para eliminar un registro de la base de datos.

private void btnDelete_Click(object sender, RoutedEventArgs e) 
{ 
    Password passwordentry = new Password(); 
    passwordentry.ShowDialog(); 

    if (Application.Current.Properties["PassGate"].ToString() == "mypassword") 
    { 
     Code, or call to delete the record; 
    } 
    Application.Current.Properties["PassGate"] = ""; 
} 

En la ventana secundaria (contraseña), la propiedad de la aplicación es conjunto utilizando un cuadro de texto. Esta es una ventana simple que tiene un cuadro de texto llamado PasswordTextBox y un par de botones, como Aceptar y Cancelar.

private void AcceptButton_Click(object sender, RoutedEventArgs e) 
{ 
    Application.Current.Properties["PassGate"] = PasswordTextBox.Text; 
    this.Close(); 
} 
Cuestiones relacionadas