如果我在方法中定义变量,然后订阅具有Lambda表达式的事件,并使用该表达式主体内的变量,引用是否仍然有效?我没有得到编译时错误,但它似乎并没有像我希望的那样工作。
请参阅:
void OnAddAssignment()
{
var win = new View.NewTransportationView();
var vm = new NewTransportationViewModel(DateTime.Today);
vm.JobSaved += (s, e) => { win.Close(); };
win.DataContext = new ViewModel.NewTransportationViewModel(DateTime.Today);
win.WindowStartupLocation = WindowStartupLocation.CenterScreen;
win.Show();
}
注意:NewTransportationView
继承自System.Windows.Window
我希望当JobSaved
触发时,窗口会关闭,而我不必将引用保存到方法外的NewTransportationView
。
我意识到可能有很多其他方法可以解决这个问题,很多或者更优雅和高效,虽然我肯定愿意看到建议,但我对这个特定应用程序的一般行为和范围规则更感兴趣一个Lambda表达式。
加分问题:当我在他们上面调用.Show()
时,我的Window对象在哪里?