C# Windows Phone 8 WP8 開發,Pivot解決程式碼中動態新增PivotItem可能遇到的例外狀況【Value does not fall within the expected range.】

一般我們在開發Windows Phone App時,很常使用Pivot控制項來包裝要呈現的資料,但是如過資料不是固定形式的話,我們可能不會採用DataTemplate和Binding的方式來呈現,所以我們會採用程式碼動態產生的方式來達成,但是怎麼就程式碼明明正確,卻一直Exception哩?

本篇文章將引導您解決程式碼中動態新增PivotItem遇到的例外狀況【Value does not fall within the expected range.】

一般我們在開發Windows Phone App時,很常使用Pivot控制項來包裝要呈現的資料,但是如過資料不是固定形式的話,我們可能不會採用DataTemplate和Binding的方式來呈現,所以我們會採用程式碼動態產生的方式來達成,但是怎麼就程式碼明明正確,卻一直Exception哩?

 

本篇文章將引導您解決程式碼中動態新增PivotItem遇到的例外狀況【Value does not fall within the expected range.】

 

 

 

首先先放置一個Pivot在舞台上,並賦予名稱,方便在程式碼中取用。

 

   1:   <phone:Pivot  x:Name="Pivot_Root" />

 

PivotItem的Header屬性其實是一個Content,可以放入任一個控制項,並隨意的布置,

所以利用程式碼動態產生PivotItem時我們會這樣做

 

   1:  //宣告一個給PivotItem用的Content,Grid內要塞什麼就依照需求設計
   2:  Grid Gird_Root = new Grid();
   3:  //宣告PivotItem,並將Gird_Root指定為其Content
   4:  PivotItem PI = new PivotItem() { Content = Gird_Root };
   5:  //自定義Pivot Header,也就是標題的部分
   6:  PI.Header = new TextBlock()
   7:  {
   8:      Text="項目一",
   9:      Foreground=new SolidColorBrush(Colors.White),
  10:      FontSize=40
  11:  };
  12:  //將PivotItem放入舞台上的Pivot_Root中
  13:  Pivot_Root.Items.Add(PI);

 

程式碼看次完美無誤,運行後悲劇就發生了.....

就出現錯誤了 【Value does not fall within the expected range.】

(筆者前幾天出現這個錯誤後來修正了,可是今天怎麼改都弄不出那個錯誤了 = =....所以沒有附上圖,不管就接著講解決方案!!)

 

其實最關鍵的地方就出在PivotItem地Header,經筆者實際測試只要把Header改成純文字就不會出錯了,

但是這不是我們想要的啊!!

所以我們可以採用替代方案,直接在Xaml中的Pivot底下加入PivotItem的Header Template,並用Binding的方式給定TextBlock值

 

   1:  <phone:Pivot Grid.Row="2" x:Name="Pivot_Root">
   2:      <phone:Pivot.HeaderTemplate>
   3:          <DataTemplate>
   4:              <TextBlock Text="{Binding}" Foreground="White" FontSize="30"/>
   5:          </DataTemplate>
   6:      </phone:Pivot.HeaderTemplate>
   7:   
   8:  </phone:Pivot>

 

然後在C#程式碼中直接指定純文字就可以了 :

 

   1:  //宣告一個給PivotItem用的Content,Grid內要塞什麼就依照需求設計
   2:  Grid Gird_Root = new Grid();
   3:  //宣告PivotItem,並將Gird_Root指定為其Content
   4:  PivotItem PI = new PivotItem() { Content = Gird_Root };
   5:  //自定義個Pivot Header,也就是標題的部分
   6:  PI.Header = "項目一";
   7:  //將PivotItem放入舞台上的Pivot_Root中
   8:  Pivot_Root.Items.Add(PI);

 

如此一來就解決了Pivot中遇到【Value does not fall within the expected range.】的問題囉!!

 

其他相關議題 :

C# Windows 8,Windows Phone 8 WP8,使用程式碼動態產生Chart長條圖,不用Telerik UI也能做。

C# Windows 8,Windows Phone 8 WP8,使用程式碼動態產生ScrollViewer,並放入可捲動的資料。

C# Windows 8,Windows Phone 8 WP8,使用程式碼動態產生Grid。

C# Windows 8,Windows Phone 8 WP8,使用程式碼動態產生StackPanel。

[筆記]C# Windows Phone 8 WP8 開發,找回StackPanel底下Orientation消失的屬性。

C# Windows Phone 8 WP8 高級開發,製作不循環 Pivot ,圖片(Gallery)導覽不求人! 內附圖文教學!!

C# Windows Phone 8 自訂PivotItem標題,大小、顏色…等,讓Pivot更有顏色 ! !

C# Windows Phon 8 WP8 ,解決Pivot中PivoitItem可能遇到清不乾淨的弔詭情況。

 

 

 

 

文章中的敘述如有觀念不正確錯誤的部分,歡迎告知指正 謝謝
轉載請註明出處,並且附上本篇文章網址 !  感謝。

SUKI

HOLIESTAR