我在Silverlight中有一个子窗口,我希望发送一个字符串值来填充应用程序MainPage.xaml中的文本框。
我怎样才能传回价值?
我试过这个 -
MainPage m = (MainPage)Application.Current.RootVisual;
m.textBox1.Text = value;
答案 0 :(得分:2)
你应该以相反的方式做到这一点。打开子窗口的父级应将事件处理程序附加到子级的事件,例如:
childwindow.ButtonClicked += new EventHandler(childWindow_ButtonClicked);
在此处理程序中,Parent可以使用子窗口属性中的值更新自己的控件。
private void childWindow_ButtonClicked(object sender, EventArgs e)
{
txtValue.Text = childwindow.Value;
}
答案 1 :(得分:0)
假设您使用的是mvvm模式,可以使用子窗口的ShowDialog方法打开它。 ShowDialog方法一直等到窗口关闭。
关闭窗口后,您可以从窗口视图模型中读取相关属性,并在主页面中设置它们的值。
var view = new ChildWindowView();
var model = new ChildWindowViewModel();
view.DataContext = model;
var result = view.ShowDialog();