實現此目的的一種方法是在雙擊處理程序中調用單擊事件。只有當你不希望arguments
通過事件傳遞時才能完成。
儘管目前並不需要數據,但總是很好,你永遠不知道什麼時候以及什麼時候要擴展,所以你可以創建一個簡單的BridgeClass
,因爲我喜歡稱它,這有助於在兩個事件之間傳輸數據,然後調用一個方法。下面的代碼不完全一樣:
在後面的代碼:
int counter = 0;
private void Button_Tapped(object sender, TappedRoutedEventArgs e)
{
MyTappedClass SingleTapInstance = new MyTappedClass()
{
Handled = e.Handled,
OriginalSource = e.OriginalSource,
PointerDeviceType = e.PointerDeviceType
};
HandleBothTapEvents(SingleTapInstance);
}
private void Button_DoubleTapped(object sender, DoubleTappedRoutedEventArgs e)
{
MyTappedClass DoubleTapInstance = new MyTappedClass()
{
Handled = e.Handled,
OriginalSource = e.OriginalSource,
PointerDeviceType = e.PointerDeviceType
};
HandleBothTapEvents(DoubleTapInstance);
}
private void HandleBothTapEvents(MyTappedClass TapData)
{
if (TapData != null)
{
counter++;
Hello.Content = counter.ToString();
}
else
throw new Exception("No Tap event data transfered");
}
的支撐類
,並在任何你想要把它的BridgeClass
。我的建議把它放在幫助文件夾(如果有的話)。
public class MyTappedClass
{
public object OriginalSource { get; set; }
public PointerDeviceType PointerDeviceType { get; set; }
public bool Handled { get; set; }
}
注:這僅僅是一個快速的解決方法是將工作非常好,我不知道是否有實現這一目標的傳統方式,但再有就是編程沒有唯一正確的答案,所以我想你可以使用這個。通過使用Interfaces
在兩個事件之間傳輸數據,而不是在BridgeClass
之間傳輸數據,可以使功能更加通用,因爲接口的設計目的也是相同的。
一個簡單的解決方法是設置button.MouseDoubleClick + = increment();或者你用於點擊事件的任何課程。這樣他們都觸發相同的方法。確保在「初始化」部分中只做一次,否則最終會爲每次雙擊事件激活多次增量方法。 –
我想到這一點,但感覺超級哈克,我想看看,如果確實有一個「正確」的方式做到這一點。 – devios1
這種疼痛是由於該雙擊處理程序具有不同的簽名,所以你甚至不能共享相同的方法的事實加劇。 – devios1