如何在Windows Phone 8中执行Hold事件?

时间:2013-08-31 13:50:24

标签: c# listbox windows-phone

我正在尝试处理Windows Phone 8项目中的hold事件。

这是我的列表点击事件

    private void lstData_Tap(object sender, System.Windows.Input.GestureEventArgs e)
    {
        Bus selectedItemData = (sender as ListBox).SelectedItem as Bus;
        if (selectedItemData != null)
        {
            var num = selectedItemData.Number;
            var route = selectedItemData.Route;
            NavigationService.Navigate(new Uri(string.Format("/Details.xaml?parameter1=" + num + "&parameter2=" + route), UriKind.Relative));
        }

这是Hold事件

    private void lstData_Hold(object sender, System.Windows.Input.GestureEventArgs e)
    {

        MessageBoxResult m = MessageBox.Show("Would you like to add this bus to favorite list", "Add to Favorite", MessageBoxButton.OKCancel);
        if(m==MessageBoxResult.OK)
        {
            Bus selectedItemData2 = (sender as ListBox).SelectedItem as Bus;
            if (selectedItemData2 != null)
            {
                MessageBox.Show(selectedItemData2.Route);
            }
        }
    }

问题是,当我调试时,Hold事件中的selectedItemData2为null。我无法理解它如何可能适用于点击事件但不适用于保持事件。请帮帮我!

2 个答案:

答案 0 :(得分:1)

一种可能的解释是不会同时触发点击和保持事件。 1)尝试评论Tap事件并再次调试。 2)尝试发送方在hold事件参数

中包含ListBox

答案 1 :(得分:1)

当Hold事件被触发时,您所拥有的项目未被选中。但您可以访问在暂停事件中持有e.OriginalSource的项目。