mvvm命令是通过长按按钮调用的

本文关键字:按钮 调用 命令 mvvm | 更新日期: 2023-09-27 18:01:12

我有一个按钮

<Button Command="{Binding MyCommand}" />

但当我长按按钮和点击按钮时,MyCommand都会被击中。有办法解决这个问题吗?

感谢

mvvm命令是通过长按按钮调用的

您可以做以下操作:

  1. 参考系统。Windows。交互dll
  2. 在xaml代码中定义名称空间:

    xmlns:i="clr namespace:System.Windows.Interactivity;assembly=System.Windows.Interactive">

  3. 然后在您的xaml代码中连接此事件触发器:

   <i:Interaction.Triggers>
       <i:EventTrigger EventName="Tap" SourceName="btnTest">
           <i:InvokeCommandAction Command="{Binding DoSomething}" />
       </i:EventTrigger>
   </i:Interaction.Triggers>

在这种情况下,EventName是"点击",SourceName是您想要观看的按钮的x:Name。像这样:

<Button Content="Click me" x:Name="btnTest"/>

然后在你的ViewModel中,你可以将它连接到一个ICommand,我通常使用RelayCommand:

    private ICommand _DoSomething;
    public ICommand DoSomething
    {
        get
        {
            if (_DoSomething == null)
            {
                _DoSomething = new RelayCommand(DoSomethingExecute);
            }
            return _DoSomething;
        }
    }
    private void DoSomethingExecute()
    {
        Dispatcher.BeginInvoke(() =>
            {
                MessageBox.Show("btnTest on the tap event");
            });
    }

我测试了一下,只捕捉到敲击事件,没有捕捉到长按事件。