在我的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;
}
答案 0 :(得分:1)
这不是最好的方法,但对你来说好消息是你不需要做任何事情。在函数参数中使用它们时,通过引用发送对象,而不像通过值发送的基本类型(即作为副本)。
这意味着,当您在其他表单或函数中更改foo
对象的属性时,实际上是在更改同一原始foo
对象的属性。因此,如果您在另一个表单更改之后检查MainWindow
{{1}}对象,则会看到新值。