【问题标题】:Communication between parent and child window in wpfwpf中父子窗口之间的通信
【发布时间】:2010-09-20 07:08:59
【问题描述】:

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

【问题讨论】:

    标签: c# binding


    【解决方案1】:

    你有很多选择:

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

    【讨论】:

      【解决方案2】:

      摘自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 和几个按钮,例如接受和取消。

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

      【讨论】:

        猜你喜欢
        • 2013-10-21
        • 2018-07-13
        • 1970-01-01
        • 2011-10-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-03-08
        • 1970-01-01
        相关资源
        最近更新 更多