我们在其子控件之一上有一个带有上下文菜单的用户控件。
Command 绑定到 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 参数为空。
CommandParameter 绑定中 ElementName 属性的正确语法是什么?
更新:我尝试将 CommandParameter 更改为:
CommandParameter="{Binding ElementName=LayoutRoot, Path=scrollViewer}"
...但仍然无法正常工作。
感谢您的任何见解....