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