事件处理程序的Lambda表达方法的范围

时间:2012-11-30 19:58:10

标签: c# wpf winforms events lambda

如果我在方法中定义变量,然后订阅具有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对象在哪里?

0 个答案:

没有答案