c# - 鼠标右键的WPF按钮命令?

标签 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?我试过了,但据我所知这对我的按钮不起作用。

有什么建议吗?

最佳答案

试试这个

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

关于c# - 鼠标右键的WPF按钮命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33166055/

相关文章:

wpf - Cefsharp 和视频标签 WebRTC

android - 为什么我应该为 View 模型使用 viewmodelproviders?

C#:映射 IDataReader.GetTableSchema() 和 DbType 枚举?

c# - Entity Framework 中的 StoreGeneratedPattern

WPF 高性能绘图 - 我应该按画笔颜色分组吗?

wpf - 在 StackPanel 中拉伸(stretch)文本框

c# - 绕过循环依赖

WPF 和 MVVM。显示和隐藏带有超时的标签

c# - ApplicationPoolIdentity 下来自 C# 的远程 PowerShell session

c# - 使用 InstallShield LE 时,msi 包含一个程序集的过时版本,但包含其他程序集的当前版本