我有一个数据透视页面,有一个固定的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);
我不确定我是多么偏离赛道,并且会欣赏正确方向的任何指示。
感谢。
答案 0 :(得分:0)
在OnNavigatedTo事件中访问QueryString的正确方法如下:
string selectedPivotItem = this.NavigationContext.QueryString["name"];
使用像这样的导航的Pivot控件似乎很奇怪,但由于我对你的应用程序的上下文一无所知,我会假设你选择它是有原因的。
如果您正在设计一个包含要导航到的动态项目列表的应用程序,那么最好为链接列表创建一个页面,并使用查询字符串绑定到特定对象的单个详细信息页面很想要。这样做会更好,对您的用户更有意义。但同样,我不知道你的应用程序的背景或你的推理,所以这取决于你! :)