wpf中父窗口和子窗口之间的通信

时间:2010-09-20 07:09:00

标签: c# binding

我有一个启动子窗口的父窗口,在子窗口中做一些选择/操作后关闭,我想将一些信息发送回父窗口(自定义类对象),最好的方法是什么使用WPF提供的功能在WPF中完成此任务?

2 个答案:

答案 0 :(得分:6)

您有很多选择:

  • 您可以在子窗口中使用父窗口侦听的自定义事件
  • 您可以在子窗口中定义一个委托,该委托引用父窗口中的方法
  • 您可以更改子窗口的构造函数以获取对父窗口的引用,并使用该引用在父窗口上调用方法
  • 您可以使用VisualTreeHelper类获取父窗口并在该引用上调用方法

答案 1 :(得分:-1)

摘自this link

  

我发现将数据从子窗口传递到的最简单方法   父窗口是使用应用程序范围的属性。这个属性是   一个对象,并不是从孩子传递数据的最优雅的形式   父窗口,但它是最少的编程。最好的   这样做的方法是使用get和set访问器属性。

     

创建一个主窗口(mainWindow)创建一个子窗口(在这种情况下,   密码)

     

在主窗口中,必须显示子窗口,例如,在窗口中   按钮单击。这个窗口会有一个按钮来执行操作   例如,它是从数据库中删除记录。

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"] = "";
}
  

在子窗口(密码)中,应用程序的属性为   使用文本框设置。这是一个简单的窗口,其中包含一个名为的文本框   PasswordTextBox和几个按钮,如Accept和Cancel。

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