子コントロールの1つにコンテキストメニューを持つユーザーコントロールがあります。
コマンドは、ViewModelのRelayCommandにバインドされています。
ただし、コマンドはビュー内の別の子コントロールを操作する必要があります。
これを行うにはどうすればよいですか?私は、パラメータとして所望の子コントロールを渡して試してみましたが、私は構文が間違っていると思う:SL4:ビューの要素をViewModelのCommandにパラメータとして渡す
<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 paramはnullです。
CommandParameterバインディングのElementName属性の正しい構文は何ですか?
UPDATE:私はCommandParameterを変えてみました:
CommandParameter="{Binding ElementName=LayoutRoot, Path=scrollViewer}"
...しかし、まだ動作しません。
<GalaSoft_MvvmLight_Command:EventToCommand PassEventArgsToCommand="True":
Command="{Binding RecenterCommand}"
CommandParameter="{Binding ElementName=scrollViewer}" />
、あなたがカテーテル検査したい場合:私はあなたがそうPassEventArgsToCommand =「true」を追加する必要があると思い
実際にあなたの要素はx:Name = scrollViewerですか? – ecathell
はい、それです:
Number8