一般我們在開發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可能遇到清不乾淨的弔詭情況。
文章中的敘述如有觀念不正確錯誤的部分,歡迎告知指正 謝謝
轉載請註明出處,並且附上本篇文章網址 ! 感謝。