黑马程序员技术交流社区

标题: wpf中窗口间传值 [打印本页]

作者: 白夜行    时间: 2014-3-24 16:16
标题: wpf中窗口间传值
本帖最后由 白夜行 于 2014-3-24 19:40 编辑

我想把子窗口的一个对象传到主窗口中,在主窗口创建一个对象,通过showdialog()打开子窗口,为什么在子窗口中没法给这个对象赋值?
作者: mdb    时间: 2014-3-24 17:20
不知道那个对像是在哪里定义的,如果是在主窗口里定义的,那么可以重新加个子窗口的重载构造函数,将对像作为参数,然后子窗口再添加一个主窗口的对像类型的属性,在关闭子窗口后主窗口可以获取子窗口修改的对像。
不知道你要的是不是下面的效果
  1. namespace wpftest
  2. {
  3.     /// <summary>
  4.     /// Window1.xaml 的交互逻辑
  5.     /// </summary>
  6.     public partial class Window1 : Window
  7.     {
  8.         public Window1()
  9.         {
  10.             InitializeComponent();

  11.         }

  12.         private void Button_Click(object sender, RoutedEventArgs e)
  13.         {
  14.             Window2 w = new Window2(new a(), "222");// 将a对像传入子窗口Window2
  15.             w.ShowDialog();
  16.             MessageBox.Show(w.w2.name);// 获取Window2里的a对像属性
  17.         }
  18.         public class a
  19.         {
  20.             public string name = "";
  21.         }
  22.     }
  23. }
复制代码
  1. namespace wpftest
  2. {
  3.     /// <summary>
  4.     /// Window2.xaml 的交互逻辑
  5.     /// </summary>
  6.     public partial class Window2 : Window
  7.     {
  8.         public Window2()
  9.         {
  10.             InitializeComponent();
  11.         }
  12.         public Window1.a w2;// 添加对像属性
  13.         public Window2(Window1.a a, string name)
  14.         {
  15.             InitializeComponent();
  16.             a.name = name;
  17.             Title = a.name;
  18.             w2 = a;
  19.             w2.name = "window2xiugai";// 修改属性值,关闭窗口后由主窗口获取这个值
  20.         }
  21.     }
  22. }
复制代码

作者: 白夜行    时间: 2014-3-24 19:22
mdb 发表于 2014-3-24 17:20
不知道那个对像是在哪里定义的,如果是在主窗口里定义的,那么可以重新加个子窗口的重载构造函数,将对像作 ...

原来还可以在窗口加个重载构造函数,之前不知道这个,学习了,谢谢
作者: 流失的温度0    时间: 2014-3-24 23:28
可以在窗口2的后台添加一段代码。public string Name{get;set;}
在窗口1的代码里为Name赋值,然后在窗口2就可以访问这个值了。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2