2011-12-05 45 views
0

我在我的應用程序中發現了一個奇怪的點按問題。我有42個按鈕,以日曆的形式排列成6x7。每個按鈕都具有相同的功能OnDoubleTap,這是按鈕事件之一。在Windows手機中雙擊的問題

問題是,兩個按鈕上的連續敲擊被視爲第二個敲擊按鈕上的雙擊。

public void OnButtonDoubleTap(object sender, System.Windows.Input.GestureEventArgs e) 
{ 
     // function 
} 

此功能被全部通過這樣的

<Button x:Name="b00" Content="" Height="60" Width="68" MinWidth="68" MinHeight="60" Click="OnClick" DoubleTap="OnButtonDoubleTap" Foreground="#FF171717" BorderThickness="0" Hold="OnButtonLongPress" Style="{StaticResource DateButtonTemplate}" FontFamily="{StaticResource CicleFina}" /> 
<Button x:Name="b01" Content="" Height="60" Canvas.Left="68" Width="68" MinWidth="68" MinHeight="60" Click="OnClick" DoubleTap="OnButtonDoubleTap" Hold="OnButtonLongPress" Foreground="#FF171717" BorderThickness="0" Style="{StaticResource DateButtonTemplate}" FontFamily="{StaticResource CicleFina}"/> 
<Button x:Name="b02" Content="" Height="60" Canvas.Left="136" Width="68" MinWidth="68" MinHeight="60" Click="OnClick" DoubleTap="OnButtonDoubleTap" Hold="OnButtonLongPress" Foreground="#FF171717" BorderThickness="0" Style="{StaticResource DateButtonTemplate}" FontFamily="{StaticResource CicleFina}"/> 
<Button x:Name="b03" Content="" Height="60" Canvas.Left="204" Width="68" MinWidth="68" MinHeight="60" Click="OnClick" DoubleTap="OnButtonDoubleTap" Hold="OnButtonLongPress" Foreground="#FF171717" BorderThickness="0" Style="{StaticResource DateButtonTemplate}" FontFamily="{StaticResource CicleFina}"/> 
<Button x:Name="b04" Content="" Height="60" Canvas.Left="272" Width="68" MinWidth="68" MinHeight="60" Click="OnClick" DoubleTap="OnButtonDoubleTap" Hold="OnButtonLongPress" Foreground="#FF171717" BorderThickness="0" Style="{StaticResource DateButtonTemplate}" FontFamily="{StaticResource CicleFina}"/> 

任何想法,爲什麼發生這種情況的XAML代碼的42個按鈕相關聯?

Alfah

+0

我不知道,如果它直接關係到你的問題,但同時處理的'Click'和'DoubleTap'事件是一條可能會導致問題的路線,因爲當用戶雙擊時會觸發 –

+0

@Matt任何有關如何防止這種情況的建議。這42個按鈕是日期,雙擊會打開一個頁面,我們可以在該日期添加註釋。所以在不同的按鈕上點擊兩次會打開一個頁面,在第二次點擊的按鈕/日期上添加註釋,這根本不是所期望的行爲。 – alfah

+1

同時處理單擊和雙擊(就觸摸屏設備的用戶而言,點擊就像點擊一樣)導致混淆並且不可發現。用戶也不希望有一個「按鈕」分別響應單擊和雙擊。使用上下文菜單訪問輔助功能。您還應該使用內置日曆作爲預期功能的參考,因爲這是用戶期望的日曆界面的行爲。 –

回答

1

我已經通過捕獲第一次點擊和第二次點擊來解決問題。 檢查發件人的姓名,並且只有在兩者都相同時才執行該功能。

首次點擊是對的OnClick功能和第二在OnDoubleTap功能捕獲

public void OnClick(object sender, RoutedEventArgs e) 
{ 
    Button nbut = sender as Button; 
    m_captureFirstClick = nbut.Name; 
} 

public void OnButtonDoubleTap(object sender, System.Windows.Input.GestureEventArgs e) 
{ 
    Button temp = sender as Button; 
    if (temp.Name == m_captureFirstClick) 
    { 
     // do what you want to do 
    } 
} 

Alfah