黑马程序员技术交流社区
标题:
wpf中窗口间传值
[打印本页]
作者:
白夜行
时间:
2014-3-24 16:16
标题:
wpf中窗口间传值
本帖最后由 白夜行 于 2014-3-24 19:40 编辑
我想把子窗口的一个对象传到主窗口中,在主窗口创建一个对象,通过showdialog()打开子窗口,为什么在子窗口中没法给这个对象赋值?
作者:
mdb
时间:
2014-3-24 17:20
不知道那个对像是在哪里定义的,如果是在主窗口里定义的,那么可以重新加个子窗口的重载构造函数,将对像作为参数,然后子窗口再添加一个主窗口的对像类型的属性,在关闭子窗口后主窗口可以获取子窗口修改的对像。
不知道你要的是不是下面的效果
namespace wpftest
{
/// <summary>
/// Window1.xaml 的交互逻辑
/// </summary>
public partial class Window1 : Window
{
public Window1()
{
InitializeComponent();
}
private void Button_Click(object sender, RoutedEventArgs e)
{
Window2 w = new Window2(new a(), "222");// 将a对像传入子窗口Window2
w.ShowDialog();
MessageBox.Show(w.w2.name);// 获取Window2里的a对像属性
}
public class a
{
public string name = "";
}
}
}
复制代码
namespace wpftest
{
/// <summary>
/// Window2.xaml 的交互逻辑
/// </summary>
public partial class Window2 : Window
{
public Window2()
{
InitializeComponent();
}
public Window1.a w2;// 添加对像属性
public Window2(Window1.a a, string name)
{
InitializeComponent();
a.name = name;
Title = a.name;
w2 = a;
w2.name = "window2xiugai";// 修改属性值,关闭窗口后由主窗口获取这个值
}
}
}
复制代码
作者:
白夜行
时间:
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