mvvm命令是通过长按按钮调用的
本文关键字:按钮 调用 命令 mvvm | 更新日期: 2023-09-27 18:01:12
我有一个按钮
<Button Command="{Binding MyCommand}" />
但当我长按按钮和点击按钮时,MyCommand都会被击中。有办法解决这个问题吗?
感谢
您可以做以下操作:
- 参考系统。Windows。交互dll
-
在xaml代码中定义名称空间:
xmlns:i="clr namespace:System.Windows.Interactivity;assembly=System.Windows.Interactive">
-
然后在您的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");
});
}
我测试了一下,只捕捉到敲击事件,没有捕捉到长按事件。