将子窗口中的值传递回MainPage

时间:2012-11-02 11:49:40

标签: c# silverlight return-value

我在Silverlight中有一个子窗口,我希望发送一个字符串值来填充应用程序MainPage.xaml中的文本框。

我怎样才能传回价值?

我试过这个 -

MainPage m = (MainPage)Application.Current.RootVisual;
m.textBox1.Text = value;

2 个答案:

答案 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();