2
私はこれ以外の方法でラムダを使用することに慣れています。 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
にアクセスできません。静的コンテキスト。
これは私が閉鎖にラムダを使用するときに慣れていた動作ではありません。ここでは何が違うのですか?
Aaah、ありがとう、ジョン。私はC#6が自動プロパティ初期化子を可能にするという事実を忘れてしまった。今私はWPFで数年前に作ったのを覚えています。私はコンストラクタでコマンドをビルドしましたが、私はあなたがイニシャライザでそれを行うことができないことに気づいたことはありません。あなたがそれを必要としているとは限りませんが、私はあなたにこれに恩恵を与えてくれることを望みました。この問題は一週間の驚異の源です。 – ProfK