Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WPF-在第二个窗口中使用向导初始化对象_C#_Wpf - Fatal编程技术网

C# WPF-在第二个窗口中使用向导初始化对象

C# WPF-在第二个窗口中使用向导初始化对象,c#,wpf,C#,Wpf,在WPF应用程序中,我很难借助类似向导的窗口来初始化对象。我有一个主应用程序窗口,用来显示计划对象的内容。我想在另一个窗口中初始化Plan对象,该窗口类似于帮助用户参数化Plan 概念如下: MainWindow.xaml.cs WndAddEditPlan.xaml.cs 用户点击NewPlan按钮,向导弹出以创建新的Plan。用户填写所需信息并单击CreatePlan按钮。向导关闭,但主窗口内的apActivePlan未初始化 您不必通过引用类型对象传递ref,因为它们 已经有参考资料了 另

在WPF应用程序中,我很难借助类似向导的窗口来初始化对象。我有一个主应用程序窗口,用来显示
计划
对象的内容。我想在另一个窗口中初始化
Plan
对象,该窗口类似于帮助用户参数化
Plan

概念如下:

MainWindow.xaml.cs

WndAddEditPlan.xaml.cs

用户点击
NewPlan
按钮,向导弹出以创建新的
Plan
。用户填写所需信息并单击
CreatePlan
按钮。向导关闭,但主窗口内的apActivePlan未初始化

您不必通过引用类型对象传递
ref
,因为它们 已经有参考资料了

另一件事

this.apActivePlan = new Plan();
这里您将内存分配给一个局部变量

Plan apActivePlan = null;
不是你经过的那个

ref Plan apActivePlan
两者都是不同的内存指针

因此,您将内存分配给WndadEditPlan的本地引用,并希望初始化MainWindow的变量

所以改变这条线

apActivePlan = new Plan();
而不是

this.apActivePlan = new Plan();

我已删除
ref
关键字,并将行调整为
apActivePlan=new Plan()
但返回到主窗口后,主窗口中的apActivePlan成员仍为
null
。如果,而不是
WndAddEditPlan wndAddPlan=new WndAddEditPlan(ref apActivePlan),我在WndadEditPlan中定义了一个构造函数来接收对MainWindow的引用,而不仅仅是它开始工作的apActivePlan字段。可能是
DataContext
出了问题?
apActivePlan = new Plan();
this.apActivePlan = new Plan();