Windows phone 7 Tap事件处理程序

Windows phone 7 Tap事件处理程序,windows-phone-7,Windows Phone 7,在windows phone 7.0中,似乎没有与7.1中相同的点击事件处理程序 我发现SelectionChanged事件,但此事件会导致问题。那么7.0中有没有与Tap不同的事件 private void flightlist_SelectionChanged(object sender, SelectionChangedEventArgs e) { PhoneApplicationService.Current.State["Flight"] = flightlist.Sele

windows phone 7.0中,似乎没有与7.1中相同的点击事件处理程序 我发现SelectionChanged事件,但此事件会导致问题。那么7.0中有没有与Tap不同的事件

private void flightlist_SelectionChanged(object sender, SelectionChangedEventArgs e)  
{    
PhoneApplicationService.Current.State["Flight"] = flightlist.SelectedItem;    
NavigationService.Navigate(new Uri("/FlightDetail", UriKind.Relative));    
}

您可以使用列表框的MouseLeftButtonUp事件,然后获取所选项目(如果有)。示例代码:

private void YourListBox_LeftMouseButtonUp(object sender, MouseButtonEventArgs e)
{
    var listBox = sender as ListBox;
    var item = listBox.SelectedItem;
    if (item != null)
    {
        //do something with the item
    }
}

您可以使用列表框的MouseLeftButtonUp事件,然后获取所选项目(如果有)。示例代码:

private void YourListBox_LeftMouseButtonUp(object sender, MouseButtonEventArgs e)
{
    var listBox = sender as ListBox;
    var item = listBox.SelectedItem;
    if (item != null)
    {
        //do something with the item
    }
}
有一个手势监听器,允许您处理点击、双击和更多事件

它可以附加到任何元素。但无论如何,对于SelectionChanged事件的用途,使用定制的tap处理程序是一个愚蠢的想法。你应该澄清为什么它会给你带来问题

更新

将您的代码修改为:

private void flightlist_SelectionChanged(object sender, SelectionChangedEventArgs e)
{    
    if (flightlist.SelectedItem != null)
    {
        PhoneApplicationService.Current.State["Flight"] = flightlist.SelectedItem;
        NavigationService.Navigate(new Uri("/FlightDetail", UriKind.Relative));
    }

    // reset the selected-index, so the user can click on it again, after returning.
    flightlist.SelectedIndex = -1;
}
有一个手势监听器,允许您处理点击、双击和更多事件

它可以附加到任何元素。但无论如何,对于SelectionChanged事件的用途,使用定制的tap处理程序是一个愚蠢的想法。你应该澄清为什么它会给你带来问题

更新

将您的代码修改为:

private void flightlist_SelectionChanged(object sender, SelectionChangedEventArgs e)
{    
    if (flightlist.SelectedItem != null)
    {
        PhoneApplicationService.Current.State["Flight"] = flightlist.SelectedItem;
        NavigationService.Navigate(new Uri("/FlightDetail", UriKind.Relative));
    }

    // reset the selected-index, so the user can click on it again, after returning.
    flightlist.SelectedIndex = -1;
}

问题出现在这个场景中:选择后,我想导航到另一个页面,我可以这样做。但是,如果我按“上一步”按钮返回到我从整个应用程序导航到的页面,该页面将崩溃并存在。这可能是因为您的代码没有正确地删除。它不一定与ListBox或SelectionChanged事件相关(显示一些代码!)。此外,如果用户单击“上一步”按钮时应用程序崩溃,则应用程序将永远无法通过验证。当我在7.1中使用Tap事件时,问题不再出现。我对它进行了测试,似乎在我单击back按钮后,事件再次被触发,这导致导航到第二个页面,该页面反过来读取空变量,因此引发异常。选择代码如上面的问题所示。是的,这是一个明显的问题。您没有检查flightlist.SelectedItem是否为null/unset。有关详细信息,请参阅我编辑的答案。谢谢克劳斯,一如既往,你是WP7专家:)问题出现在这种情况下:选择后,我想导航到另一个页面,我可以这样做。但是,如果我按“上一步”按钮返回到我从整个应用程序导航到的页面,该页面将崩溃并存在。这可能是因为您的代码没有正确地删除。它不一定与ListBox或SelectionChanged事件相关(显示一些代码!)。此外,如果用户单击“上一步”按钮时应用程序崩溃,则应用程序将永远无法通过验证。当我在7.1中使用Tap事件时,问题不再出现。我对它进行了测试,似乎在我单击back按钮后,事件再次被触发,这导致导航到第二个页面,该页面反过来读取空变量,因此引发异常。选择代码如上面的问题所示。是的,这是一个明显的问题。您没有检查flightlist.SelectedItem是否为null/unset。有关详细信息,请参阅我编辑的答案。谢谢克劳斯,一如既往,你是WP7专家:)谢谢你,伙计,抱歉,但需要获得最佳答案:)谢谢你,伙计,抱歉,但需要获得最佳答案:)