子コントロールの1つにコンテキストメニューを備えたユーザーコントロールがあります。
コマンドは、ViewModelのRelayCommandにバインドされています。
ただし、コマンドはビュー内の別の子コントロールに作用する必要があります。
これを行うための最良の方法は何ですか?目的の子コントロールをパラメーターとして渡そうとしましたが、構文が正しくないと思います。
<Controls:ContextMenu >
<Controls:MenuItem Header="Center" >
<i:Interaction.Triggers>
<i:EventTrigger EventName="Click" >
<GalaSoft_MvvmLight_Command:EventToCommand
Command="{Binding RecenterCommand}"
CommandParameter="{Binding ElementName=scrollViewer}" />
</i:EventTrigger>
</i:Interaction.Triggers>
</Controls:MenuItem>
</Controls:ContextMenu>
コマンド:
RecenterCommand = new RelayCommand<ScrollViewer>(Recenter);
private void Recenter(ScrollViewer obj)
{
}
コンテキストメニューを使用すると、Recenter()が呼び出されますが、objパラメータがnullです。
CommandParameterバインディングのElementName属性の正しい構文は何ですか?
更新:CommandParameterを次のように変更してみました:
CommandParameter="{Binding ElementName=LayoutRoot, Path=scrollViewer}"
...しかし、それでも機能しません。
洞察をありがとう....