EventToCommandがロードイベントでコマンドパラメータを渡すのに失敗するMVVMLight EventToCommandとPage Loadイベントを使用してCommandParameterを渡しますか?
ページまたはユーザーコントロールのLoadイベントに接続すると、EventToCommandはViewModelのハンドラを正常に呼び出しますが、CommandParameterは渡しません。ただし、同じXAMLが別のイベント(ボタンクリックなど)にアタッチされている場合、コマンドハンドラはデータバインドされたデータをそのパラメータとして受け取ります。 XAML:
<i:EventTrigger EventName="Loaded" SourceObject="{Binding ElementName=Control}"> <Command:EventToCommand x:Name="etcLoad" Command="{Binding LoadCommand}" CommandParameter="{Binding Target, ElementName=Control}" /> </i:EventTrigger>
ターゲットは表示上の文字列DPです。
VMコード:
internal void Load(string p_Param)
{
this.Initialise();
}
public RelayCommand<string> LoadCommand { get; private set; }
とコマンドはそう割り当てられます。
this.LoadCommand = new RelayCommand<string>(this.Load);
私はバインディングがターゲットDPかに割り当てよりも後に行われていると問題があることはほぼ確実です似たような。私は、このASAPや他の方法で、文字列がOnNavigateToのオーバーライドから割り当てられたViewModelに文字列を渡す可能性のある解決策を見つけることに興味があります。目的は、URIを介して供給されるクエリプロパティ、すなわち「/ Views/DisplayTabDetails?Tab = Tab1」または同様のものに基づいてタブの選択を提供することである。
はい、これは可能ですが、 'public RelayCommand LoadCommand {get;}を使用するLoadイベントの場合は可能です。プライベートセット;} 'は、コマンドハンドラ上のパラメータのためにヌル値になります。今ここに来ている時間的側面を持つものがあるように見えます - パラメータは設定されていません。 –
Intelligence4
問題の解決策へのリンクと、ここにいくつかの行を追加しました。私はサンプルを直接投稿していただろうが、モバイルデバイスにコードを書くことは背後にある痛みである...残念だが、サンプルがまだ助けてくれることを願っている! – AxelEckenberger