渡されたイベントのargsと送信者は、リレーコマンドに送信されます
-
23-10-2019 - |
質問
RelayCommandを使用するとき、どのようにイベント送信者を取得しますか?
解決
これは、私が実際にあなたの質問に答えるのではなく、あなたが違ったやり方で何をすべきかについて講義するのではなく、私が実際にあなたの質問に答えるのではなく、それの痛みの1つです。だから、それについて申し訳ありません。ここにあります:
ViewModelで送信者オブジェクトを取得する必要がある立場にいる場合は、おそらく何か違うことをする必要があります。たとえば、ビューモデルのボタンまたはリストボックスを参照することにより、そのビューモデルに何も知らないUIの概念を認識させました。私の提案は、代わりにコードビハインドページのイベントに接続し、送信者や何のことで知っておくべきことを見つけてから、プログラムでviewmodelコマンドを実行することです。それはMVVMの「ルール」を破壊していますが、IMHOはあなたのViewModelで送信者を参照するよりもはるかにスリターハックです。
他のヒント
私は同様の問題を抱えていましたが、Eventargsを取得するだけで必要でした。喜んで、これはStack Overflowで別のスレッドで答えを見つけた後、ばかげて単純でした。
<cmd:EventToCommand Command="{Binding SomeCommand, Mode=OneWay}" PassEventArgsToCommand="True"/>
その魔法の「passeventargstocommand」の設定について知ったら、あなたは黄金です。 aを使用するだけです RelayCommand<type>
プレーンリレーコマンドの代わりに。
これが役立つことを願っています。
これは、送信者をコマンドパラメーターにバインドすることで実行できます。
<command:EventToCommand
Command="{Binding CommandName}"
CommandParameter="{Binding RelativeSource=
{ RelativeSource FindAncestor,
AncestorType={x:Type TypeOfSender},
AncestorLevel=1}}"
PassEventArgsToCommand="True" >
</command:EventToCommand>
所属していません StackOverflow