[Windows Phone]Pivot 切換Page所觸發之事件。

  • 741
  • 0
  • 2014-01-22

[Windows Phone]Pivot 切換Page所觸發之事件。

 

小編在寫Pivot這容器時,曾遇到切換page,而前一個page所使用的Timer卻還在執行,影響到其他的page。
 

這時就需要請「PivotSelectionChanged」來幫忙了。

 

 

1.先建立一個Pivot的APP。

其容器有2個「textblock」及2個「button」。

 

   1: <Grid x:Name="LayoutRoot" Background="Transparent">
   2:  
   3:         <!--樞紐分析控制項-->
   4:         <phone:Pivot Title="我的應用程式">
   5:             <!--樞紐分析項目 1-->
   6:             <phone:PivotItem Header="first">
   7:                 <StackPanel Orientation="Vertical">
   8:                     <TextBlock Name="tbl_1" Text="0" FontSize="50" Height="80" HorizontalAlignment="Center" />
   9:                     <Button Content="ADD" Click="Button_Click"/>
  10:                 </StackPanel>
  11:             </phone:PivotItem>
  12:  
  13:             <!--樞紐分析項目 2-->
  14:             <phone:PivotItem Header="second">
  15:                 <StackPanel Orientation="Vertical">
  16:                     <TextBlock Name="tbl_2" Text="0" FontSize="50" Height="80" HorizontalAlignment="Center" />
  17:                     <Button Content="ADD" Click="Button_2_Click"/>
  18:                 </StackPanel>
  19:             </phone:PivotItem>
  20:         </phone:Pivot>
  21:  
  22:     </Grid>

 

 

2.之後在「button」裡打入code

   1: private void Button_Click(object sender, RoutedEventArgs e)
   2: {
   3:     int x = int.Parse(tbl_1.Text);
   4:     tbl_1.Text = (x + 1).ToString();
   5: }
   6:  
   7: private void Button_2_Click(object sender, RoutedEventArgs e)
   8: {
   9:     int x = int.Parse(tbl_2.Text);
  10:     tbl_2.Text = (x + 1).ToString();
  11: }

 

 

3.接下來按下執行後,應該是每個page的textblock跟button所計算的值是分開的。

 

demo1demo2

 

4.之後要改寫成,切換到「page 1」時,「page 2」的值是「100」;切換到「page 2」時,「page 1」的值清除。

 

回到「MainPage.xaml」加上「selectionchanged」,讓他自己新增。

   1: <phone:Pivot SelectionChanged="Pivot_SelectionChanged" Title="我的應用程式">

 

 

5.到「Pivot_SelectionChanged」打入

   1: private void Pivot_SelectionChanged(object sender, SelectionChangedEventArgs e)
   2: {
   3:     if (((Pivot)sender).SelectedIndex == 0)
   4:     {
   5:         tbl_2.Text = (100).ToString();
   6:     }
   7:     else
   8:     {
   9:         tbl_1.Text = "0";
  10:     }
  11: }

 

 

(Pivot)sender是將sender轉型成Pivot,然後取「selectedindex」,判斷目前的page的值是多少。

page的起始從「0」開始。

 

(結果)

 

當按到「5」時

1

 

之後切換到「page 2」

3

 

再切回「page 1」

 

4

 

 

 

 

Reference

Pivot-Page SelectionChanged doesn't react

 

若有觀念錯誤、內容錯誤,勞請告知。 謝謝。

若要轉載請註明出處,謝謝。