【发布时间】:2018-07-09 08:07:46
【问题描述】:
我在 WPF 应用程序中努力在类似向导的窗口的帮助下初始化对象。我有一个主应用程序窗口,用于显示Plan 对象的内容。我想在另一个窗口中初始化 Plan 对象,这类似于帮助用户参数化 Plan 的向导。
概念如下:
MainWindow.xaml.cs
public partial class MainWindow : RibbonWindow
{
public Plan apActivePlan;
public MainWindow()
{
InitializeComponent();
}
private void rbNewPlan_Click(object sender, RoutedEventArgs e)
{
WndAddEditPlan wndAddPlan = new WndAddEditPlan(ref apActivePlan);
wndAddPlan.ShowDialog();
if (wndAddPlan.DialogResult.HasValue && wndAddPlan.DialogResult.Value)
{
/* "Create" button clicked in wndAddPlan,
* so we update the ListView in MainWindow */
lvPlanRows.ItemsSource = this.apActivePlan.Rows; // this is where the problem occurs - apActivePlan is null despite the fact that it has been initialized by wndAddPlan
}
}
WndAddEditPlan.xaml.cs
public partial class WndAddEditPlan : Window
{
Plan apActivePlan = null;
public WndAddEditPlan(ref Plan apActivePlan)
{
InitializeComponent();
this.apActivePlan = apActivePlan;
if(this.apActivePlan == null)
this.apActivePlan = new Plan();
}
private void btnCreatePlan_Click(object sender, RoutedEventArgs e)
{
DialogResult = true;
}
}
用户点击NewPlan按钮,会弹出创建新Plan的向导。用户填写所需信息并单击CreatePlan 按钮。向导关闭,但 MainWindow 中的 apActivePlan 未初始化。
【问题讨论】: