簡體   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