如何将页面中的数据恢复到主窗口?

时间:2018-02-25 17:58:17

标签: c# .net wpf

在我的MainWindow.cs类中,我有tab控件,我在其中实例化不同的页面。我可以通过重载构造函数将数据发送到页面。但是,当页面对我发送的'foo'对象进行更改时,如何在Mainwindow中重新获取这些更改?

MainWindow.cs:

public partial class MainWindow : Window
{
    Foo foo = new Foo();
    public MainWindow() {
        InitializeComponent();
        foo.FooName = "foo Name";
        foo.FooNumber = 99;
    }

    //Event that controls tabbing and loads page resources.
    private void OnSelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        if (this.tabProfile != null && this.tabProfile.IsSelected)
        {
            this.Main.Content = new TestPage(foo);
        }
    }
}

测试页面:

public TestPage(Foo foo)
{
    Console.WriteLine(foo.FooName + "  " + foo.FooNumber.ToString());

    //How do I get these changes back to MainWindow.cs?
    foo.FooName = "Foo Name Change";
    foo.FooNumber = 222;   

    InitializeComponent();
    DataContext = this;
}

1 个答案:

答案 0 :(得分:1)

这不是最好的方法,但对你来说好消息是你不需要做任何事情。在函数参数中使用它们时,通过引用发送对象,而不像通过值发送的基本类型(即作为副本)。

这意味着,当您在其他表单或函数中更改foo对象的属性时,实际上是在更改同一原始foo对象的属性。因此,如果您在另一个表单更改之后检查MainWindow {{1}}对象,则会看到新值。