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
中查找按钮
,而是可以找到例如边框
。