用于鼠标右键的WPF按钮命令?

时间:2015-10-16 08:43:41

标签: c# wpf mvvm command

我正在学习WPF中的MVVM和命令。我有几个按钮,如果用鼠标左键或右键单击按钮,我想触发类似的命令。

到目前为止,我使用了事件处理程序,我可以通过检查MouseButtonEventArgs来确定按下了哪个鼠标按钮。

<Button Content="Command Test" PreviewMouseDown="Button_PreviewMouseDown"/>

当前代码背后:

private void Button_PreviewMouseDown(object sender, MouseButtonEventArgs e) 
    if (e.LeftButton == MouseButtonState.Pressed) {
        Debug.Print("Left");
    }
    else {
        Debug.Print("Right");
    }
}

但如果我使用命令,我看不出任何类似内容。

如何为按钮设置不同的命令?单击鼠标左键时的一个命令和单击鼠标右键时的另一个命令?

<Button Content="Command Test" Command="{Binding PressLetterCommand, Mode=OneWay}"/>

目前,只有在单击鼠标左键时才会触发命令。如果单击鼠标右键也会触发该命令,我可以找到单击的按钮,这也是一个解决方案。

我搜索过,我发现这个问题和答案都使用了Decorator。 How do I bind a command to e.g. the right mouse button in a ControlTemplate in WPF?我试过了,但据我了解,这对我的按钮不起作用。

有什么建议吗?

1 个答案:

答案 0 :(得分:16)

试试这个

<Button Content="Command Test">
    <Button.InputBindings>
        <MouseBinding Gesture="RightClick" Command="{Binding PressLetterCommand}" />
    </Button.InputBindings>
</Button>