2
private void PersonalInfoList_SelectionChanged(object sender, SelectionChangedEventArgs e)
            {
                System.Collections.IList list = e.AddedItems;
                if (e.AddedItems.Count == 1)
                {
                    IEnumerable<Category> categs = list.Cast<Category>();
                    Category em = categs.ElementAt<Category>(0);
                    int id = em.id;
                    int categoryid = em.categoryid;
                    string subcategoryname = em.subcategname;

                    NavigationService.Navigate(new Uri(String.Format("/SubCategories.xaml?id=" + id + "&categoryid=" + categoryid + "&subcategoryname=" + subcategoryname), UriKind.Relative));
                }
            }

如果列表中有 2 个项目,如果单击第一项,则能够导航到子类别页面。但再次单击相同的第一项无法导航。如果单击第一项后单击 2 项,则能够导航到子类别页面。 ……

4

2 回答 2

5

您需要在调用 to 之前或之后设置PersonalInfoList.SelectedIndexto-1NavigationService.Navigate重置所选项目。

如果您使用的是 LongListSelector,SelectedItem请将null

于 2012-04-11T07:06:45.020 回答
2

正如克劳斯在他的回答中提到的那样,您需要将 设置PersonalInfoList.SelectedIndex-1。但是,如果您只是渲染一个用于导航的列表,我NavigationList为此创建了一个:

一个快速加载的 Windows Phone 7 NavigationList 控件

这样做的好处是加载速度大约是 a 的两倍ListBox,而且您也不会遇到必须“重置”选定索引的问题。

于 2012-04-11T07:35:55.267 回答