【发布时间】:2017-05-19 18:20:51
【问题描述】:
我想同时处理Image 上的MouseLeftButtonUp 和MouseDoubleClick 事件。我将galasoft mvvm light 库用于EventToCommand。但是,MouseDoubleClick 没有被调用。实际上,它被称为,但非常罕见。为什么会发生这种情况以及如何解决?
<ContentControl>
<Image Source = "{Binding Img}" Stretch="Fill" />
<i:Interaction.Triggers>
<i:EventTrigger EventName = "MouseLeftButtonUp" >
< cmd:EventToCommand Command = "{Binding MouseUpCommand}" PassEventArgsToCommand="True" />
</i:EventTrigger>
<i:EventTrigger EventName = "MouseDoubleClick" >
< cmd:EventToCommand Command = "{Binding DoubleClickCommand}" PassEventArgsToCommand="True" />
</i:EventTrigger>
</i:Interaction.Triggers>
</ContentControl>
private ICommand _doubleClickCommand;
public ICommand DoubleClickCommand
{
get
{
if (_doubleClickCommand== null)
{
_doubleClickCommand=new RelayCommand<MouseEventArgs>(DoubleClikcFunc);
}
return _doubleClickCommand;
}
}
private ICommand _mouseUpCommand;
public ICommand MouseUpCommand
{
get
{
if (_mouseUpCommand== null)
{
_mouseUpCommand= new RelayCommand<MouseEventArgs>(MouseUpFunc);
}
return _mouseUpCommand;
}
}
private void MouseUpFunc(MouseEventArgs e)
{
Points.Add(e.GetPosition((IInputElement)e.Source));
}
private void DoubleClikcFunc(MouseEventArgs e)
{
Points.Add(MaskPoints[0]);
}
【问题讨论】:
-
看看这篇区分点击和双击的 MSDN 文章:msdn.microsoft.com/en-us/library/ms171543.aspx
-
我使用 WPF 而不是 Windows 窗体。我确信 WPF 应该有一些内置的或更简单的解决方案。
-
您将事件附加到 ContentControl 而不是 Image。
-
为什么我被否决了?
-
@Naresh Ravlani,你投票结束了吗?为什么?我有一个错误,这是我可以发布并有第二双眼睛检查问题所在的地方。
标签: c# wpf mvvm mouseevent