2
我习惯于以明显不同于此的方式使用lambdas。当我尝试并定义一个DelegateCommand
时,我必须访问该命令的封闭类型的非静态成员。例如:为什么我不能在DelegateCommand的Execute委托中访问实例属性?
public ICommand ShowViewCommand { get; set; } = new DelegateCommand<string>(v =>
{
var viewModel = new EditFormViewModel;
var ucType = Assembly.GetExecutingAssembly().GetType(v);
App.SetWindowView(viewModel, ucType);
},
v => true);
在上面的代码,在App.SetWindowView
通话,App
有一个红色波浪下划线,并在上空盘旋了,有人告诉我:
不能访问非静态属性
App
在静态上下文。
这不是我习惯使用lambdas进行关闭的行为。这里有什么不同?
Aaah,谢谢Jon。我对C#6允许使用自动属性初始值设定项这一事实感到失望。现在我记得几年前我上一次使用WPF的时候,我在构造函数中构建了这些命令,而我从来没有意识到你不能在初始化器中完成它。不是你需要它,但我希望我能给你一个这样的奖励,这个问题是一个令人惊愕的一周的问题。 – ProfK