wp7:在数据透视中导航动态pivotitems

时间:2011-02-13 00:19:20

标签: windows-phone-7 navigation pivot selecteditem

我有一个数据透视页面,有一个固定的pivotitem,并且根据数据,还有一个动态数量的附加枢轴实现。固定的pivotitem保留了创建的新pivotitems的超链接列表,其想法是单击任何链接并导航到该pivotitem。

它看起来像这样:

FixedItem | DynamicItem1 | DynamicItem2

link:DynamicItem1

link:DynamicItem2

我面临的问题是超链接点击,它不会将我带到相应的pivotitem,而是将我带到没有动态pivotitems的数据透视页面。我使用以下代码进行导航:

hyperlink.NavigateUri = new Uri("/MainPage.xaml?name=" + p.name, UriKind.Relative);

其中p.name是pivotitem的名称。我不确定这是否是正确的语法,但令人困惑的是,所有创建的pivotitems都会丢失,只留下fixeditem - 好像它正在打开一个新的pivot页面实例。

然后,在OnNavigatedTo中我尝试了以下内容:

 if (NavigationContext.QueryString.ContainsKey("name"))
        {
            // URI is '/page?name=PivotItemToSelect'. 
            string selectedPivotItem = e.Uri.Query.Split('=').Last();

            // Match PivotItemToSelect with the PivotItem's Name. 
            PivotItem pivotItemToShow = pivot.Items.Cast<PivotItem>().Single(i => i.Name == selectedPivotItem);

            pivot.SelectedItem = pivotItemToShow;
            base.OnNavigatedTo(e);
        }

在第一行,我得到一个例外,即无法在“相对”URI上执行此操作。我能用其他任何方式获得这些信息吗?

如果我将pivotitem名称更改为数字,比如i,并将该i作为索引传递,我将以下代码用作超链接按钮的_click方法 - 但在实际使用中,名称很可能是文字字符串:

pivot.SelectedIndex = int.Parse(i);

我不确定我是多么偏离赛道,并且会欣赏正确方向的任何指示。

感谢。

1 个答案:

答案 0 :(得分:0)

在OnNavigatedTo事件中访问QueryString的正确方法如下:

string selectedPivotItem = this.NavigationContext.QueryString["name"];

使用像这样的导航的Pivot控件似乎很奇怪,但由于我对你的应用程序的上下文一无所知,我会假设你选择它是有原因的。

如果您正在设计一个包含要导航到的动态项目列表的应用程序,那么最好为链接列表创建一个页面,并使用查询字符串绑定到特定对象的单个详细信息页面很想要。这样做会更好,对您的用户更有意义。但同样,我不知道你的应用程序的背景或你的推理,所以这取决于你! :)