循环遍历数据透视项并检查标题wp8
本文关键字:检查 标题 wp8 遍历 数据 透视 循环 | 更新日期: 2023-09-27 18:04:32
我有一个名为"infra"的枢轴,我想循环遍历infra中的所有枢轴项目,并检查每个项目的标题值,以确定我应该为用户加载哪个页面。我下面的代码似乎不工作。
protected override void OnNavigatedTo(NavigationEventArgs e)
{
string headerName;
if (NavigationContext.QueryString.TryGetValue("goto", out headerName))
{
foreach (PivotItem pi in infra.Items)
{
if (pi.Header.ToString() == headerName)
infra.SelectedItem = pi;
}
}
base.OnNavigatedTo(e);
}
对于如何做到这一点,有什么想法吗?上面代码的变化对全景效果很好,但我必须更改为枢轴。
附加信息:我在全景页面上基于一些JSON动态创建按钮,我也基于其他一些JSON动态创建pivot项目。这些按钮应该将用户带到特定的Pivot Item。按钮的"x:name"属性与pivot项目的标题相同。
我不知道你为什么要比较索引(变量strItemIndex
的名称)到Header
。您可以使用SelecedIndex:
protected override void OnNavigatedTo(NavigationEventArgs e)
{
string strItemIndex;
if (NavigationContext.QueryString.TryGetValue("goto", out strItemIndex))
infra.SelectedIndex = int.Parse(strItemIndex);
base.OnNavigatedTo(e);
}
EDIT -在注释和OP的编辑之后:
如果您需要识别带有Header的PivotItem,那么您的代码看起来不错。可以稍微优化一下:
string headerName;
PivotItem itemToNavigate = null;
if (NavigationContext.QueryString.TryGetValue("goto", out headerName))
itemToNavigate = infra.Items.FirstOrDefault(x => (x as PivotItem).Header.ToString() == headerName) as PivotItem;
if (itemToNavigate != null) infra.SelectedItem = item;
else infra.SelectedIndex = 0; // navigate to default one (remember to check first if there are any items)
可能出现问题的地方:
- 检查你的
infra
是否被项目填满,当方法被调用时, - 检查标题看起来如何-它们是否包含
ToString()
后的正确字符串, - 检查
headerName
从查询字符串中取出是否正确。
您应该能够通过调试检查所有这三个步骤。
Romasz建议的方法是正确的,但你也可以使用下面的方法来解决你的问题。
protected override void OnNavigatedTo(NavigationEventArgs e)
{
string headerName;
if (NavigationContext.QueryString.TryGetValue("goto", out headerName))
{
for (var i = 0; i < infra.Items.Count; i++)
{
if (((PivotItem)infra.Items[i]).Header == headerName)
{
infra.SelectedIndex = i;
break;
}
}
}
base.OnNavigatedTo(e);
}