Windows phone 8 检测页面中的点击?

Windows phone 8 检测页面中的点击?,windows-phone-8,Windows Phone 8,我有一个PhoneApplicationPage,其中有一些网格、图像和一些按钮。如果我点击我的按钮外,在页面的任何地方(在图像、网格或任何东西上),我想打开一个新页面 如何在页面上的任何位置检测点击/点击?我认为至少有两种方法可以做到这一点: 在您的PhoneApplicationPage上收听MouseLeftButtonUp事件。它应该由图像和标签触发,而不是由按钮触发 收听电话应用程序页面上的点击事件。但是,即使用户点击按钮,也会触发此事件。为了防止出现这种情况,您可以在事件处理程序中检

我有一个
PhoneApplicationPage
,其中有一些网格、图像和一些按钮。如果我点击我的按钮外,在页面的任何地方(在图像、网格或任何东西上),我想打开一个新页面


如何在页面上的任何位置检测点击/点击?

我认为至少有两种方法可以做到这一点:

  • 在您的
    PhoneApplicationPage
    上收听
    MouseLeftButtonUp
    事件。它应该由图像和标签触发,而不是由按钮触发
  • 收听
    电话应用程序页面上的
    点击
    事件。但是,即使用户点击按钮,也会触发此事件。为了防止出现这种情况,您可以在事件处理程序中检索点击坐标处的控件列表,并仅在没有按钮的情况下打开新页面:

    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
    }
    
    private void phoneapplication页面\u点击(对象发送方,System.Windows.Input.GestureEventArgs e)
    {
    var元素=(UIElement)发送方;
    var controls=visualtreeheloper.FindElementsInHostCoordinates(e.GetPosition(element),element);
    if(controls.OfType().Any())
    {
    返回;
    }
    //打开新页面
    }
    

  • 我想检查
    e.OriginalSource
    的类型是否相同?不幸的是,否。像
    按钮这样的控件由许多子控件组成,原始源将是子控件。因此,您不必在
    e.OriginalSource
    中查找
    按钮
    ,而是可以找到例如
    边框