0

如果我在方法中定义一个变量,然后使用 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 对象在哪里?

4

0 回答 0