[英]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.