繁体   English   中英

循环遍历数据透视项并检查标题 wp8

[英]Loop through pivot items and check headers wp8

我有一个名为“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 动态创建数据透视项。 这些按钮应将用户带到特定的枢轴项。 按钮“x:name”属性与数据透视项标题相同。

我不确定您为什么要尝试将 index (变量strItemIndex名称)与Header 您可以使用 SelecedIndex 轻松切换 PivotItem:

protected override void OnNavigatedTo(NavigationEventArgs e)
{
    string strItemIndex;
    if (NavigationContext.QueryString.TryGetValue("goto", out strItemIndex))
        infra.SelectedIndex = int.Parse(strItemIndex);
    base.OnNavigatedTo(e);
}

编辑- 在评论和 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);
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM