我有一个按钮
<Button Command="{Binding MyCommand}" />
但是,当我长按按钮以及单击它时,MyCommand被击中。有没有办法解决这个问题?
感谢
答案 0 :(得分:1)
您可以做的是:
在xaml代码中定义命名空间:
的xmlns:I =&#34; CLR-名称空间:System.Windows.Interactivity;装配= System.Windows.Interactivity&#34;
然后在您的xaml代码中连接此事件触发器:
<i:Interaction.Triggers> <i:EventTrigger EventName="Tap" SourceName="btnTest"> <i:InvokeCommandAction Command="{Binding DoSomething}" /> </i:EventTrigger> </i:Interaction.Triggers>
在这种情况下,EventName
是&#34;点按&#34;,SourceName
是x:您要观看的按钮的名称。像这样:
<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");
});
}
我测试过,只捕获了点击事件,而不是长按事件。