2013-09-24 109 views
2

我有一個按鈕,需要執行兩個單獨的命令(一個開始一些事情,一個停止它)。在做了一些研究之後,System.Windows.Interactivity.dll似乎提供了一種簡單的方法來實現這一點。不過,這並不用鼠標左鍵工作(它的工作,如果我使用一個事件像MouseDoubleClick的MouseRightButtonDown,但不的MouseDown的MouseUp,或的MouseRightButtonDown)......它似乎如果按鈕消耗事件本身並且interaction.trigger永遠不會看到它。我在下面提供了我的XAML的片段,我能做些什麼來解決此問題?如何在XAML中的MouseUp和MouseDown事件上使用Interaction Trigger on按鈕?

<Button Content="DoStuff"> 
    <i:Interaction.Triggers> 
     <i:EventTrigger EventName="MouseDown"> 
      <i:InvokeCommandAction Command="{Binding StartCommand}" /> 
     </i:EventTrigger> 
     <i:EventTrigger EventName="MouseUp"> 
      <i:InvokeCommandAction Command="{Binding StopCommand}" /> 
     </i:EventTrigger> 
    </i:Interaction.Triggers> 
</Button> 
+0

你甚至在拍攝按鈕類一看就檢查什麼事件都可以用? http://msdn.microsoft.com/en-us/library/system.windows.controls.button.aspx –

+0

是的,那是我做的第一件事。我嘗試了PreviewDown/Up,MouseDown/Up,PreviewMouseLeftButtonDown/Up,MouseLeftButtonDown/Up和PreviewMouseDown/Up,但它們都不起作用。 – AXG1010

回答

4

您可以使用PreviewMouseDownPreviewMouseUp代替

+0

這工作,謝謝。我早些時候嘗試過,但在我的命令中有一個錯字。你知道「預覽」事件與他們的櫃檯部分有什麼不同嗎? – AXG1010

+0

@Omribitan任何想法爲什麼隧道預覽工作,但泡沫沒有? ,我猜中間爲什麼有些元素.. –

+0

@ AXG1010 WPF引入了一個名爲[路由事件]的新概念(http://msdn.microsoft.com/en-us/library/ms742806.aspx) 。這個想法是,事件要麼由他們的創建者首先處理,然後爬上控制流水線(Bubbled事件),或者先由根元素處理,然後隧道到他們的創建者(隧道事件) - 這些是預覽事件。你可以在這裏瞭解更多[這裏](http://www.codeproject.com/Articles/464926/To-bubble-or-tunnel-basic-WPF-events) –

0

的MouseLeftButtonDown,的MouseLeftButtonUp

+0

感謝您的回覆,但這不起作用。 – AXG1010

相關問題