2012-11-04 30 views
0

我有一個PhoneApplicationPage與一些網格,圖像和幾個按鈕。如果我在頁面外部(圖片,網格或其他任何地方)點擊我的按鈕,我想打開一個新頁面。檢測頁面中的點擊?

如何檢測頁面上任意位置的點擊/點擊?

回答

1

我看到至少有兩種方法可以做到這一點:

  1. MouseLeftButtonUp事件對你PhoneApplicationPage。應該通過圖像和標籤,但沒有按鈕
  2. 觸發聽你的PhoneApplicationPageTap事件。但是,即使用戶點擊按鈕,該事件也會被觸發。爲了防止這種情況,你可以檢索的控制在水龍頭的座標列表在事件處理程序,並打開新的頁面只有當沒有按鈕:

    private void PhoneApplicationPage_Tap(object sender, System.Windows.Input.GestureEventArgs e) 
    { 
        var element = (UIElement)sender; 
    
        var controls = VisualTreeHelper.FindElementsInHostCoordinates(e.GetPosition(element), element); 
    
        if(controls.OfType<Button>().Any()) 
        { 
         return; 
        } 
    
        // Open the new page 
    } 
    
+0

我想檢查e.OriginalSource的'類型'會是一樣的嗎? – l33t

+1

不幸的是沒有。像Button這樣的控件由許多子控件組成,原始的源代碼就是子控件。因此,不要在'e.OriginalSource'中找到'Button',而是會找到例如'Border'。 –