自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

31天學(xué)會(huì)Windows Phone 7開(kāi)發(fā):樞軸控件

移動(dòng)開(kāi)發(fā)
本文是《Windows Phone 7開(kāi)發(fā)31日談》系列的第十七篇文章。上一篇,我們討論了全景視圖控件以及它的作用和使用方法。本文,我們要講一個(gè)和它很相似但又不同的控件,樞軸控件。

本文是《Windows Phone 7開(kāi)發(fā)31日談》系列的第十七篇文章。上一篇,我們討論了全景視圖控件以及它的作用和使用方法。本文,我們要講一個(gè)和它很相似但又不同的控件,樞軸控件。

什么是樞軸控件?

我把樞軸控件看作是一個(gè)可以給用戶提供相同數(shù)據(jù)的不同“層”的有效控件。例如,Windows Phone中的日歷,你可以在“日程表”和“天”兩個(gè)視圖間來(lái)回切換。它們呈現(xiàn)相同的數(shù)據(jù),但卻在兩個(gè)完全不同的視圖中。樞軸控件另一個(gè)出色的應(yīng)用是將項(xiàng)目進(jìn)行分類。電話中的設(shè)置功能就是一個(gè)很好的例子。你可以對(duì)系統(tǒng)進(jìn)行設(shè)定,或?qū)?yīng)用程序進(jìn)行設(shè)定。下面來(lái)快速瀏覽一下這些例子:

Windows Phone 7樞軸控件 

Windows Phone 7樞軸控件

使用全景視圖或樞軸控件有沒(méi)有特定的場(chǎng)合?

是的,確實(shí)有。去這兩個(gè)好地方你可以看到更多的信息。Tim Heuer寫的何時(shí)你該使用這兩個(gè)控件的優(yōu)秀文章,還有Channel 9上的Windows Phone Design Days系列視頻。

我的原則很簡(jiǎn)單:

◆使用全景視圖控件來(lái)介紹你程序中每一個(gè)有趣的內(nèi)容。

◆當(dāng)你想向用戶以不同的方式展示相同的數(shù)據(jù)時(shí)使用樞軸控件。

使用樞軸控件

如果你沒(méi)有看昨天的關(guān)于全景視圖控件的文章,快去看看。我介紹了如何在Visual Studio 2010工具箱中獲得全景視圖和樞軸控件?,F(xiàn)在,我們來(lái)深入探究樞軸控件的結(jié)構(gòu),以及如何使用它。

它的結(jié)構(gòu)非常類似于全景視圖控件,但在今天的例子中,不使用靜態(tài)內(nèi)容,我要將將數(shù)據(jù)綁定到ListBox控件中,使用DataTemplate來(lái)實(shí)現(xiàn)。下面是我添加任何內(nèi)容之前的基礎(chǔ)樞軸控件(這個(gè)例子按性別顯示了嬰兒的名字):

  1. <controls:Pivot Title="BABY NAMES"> 
  2.     <controls:PivotItem Header="boys"> 
  3.     </controls:PivotItem> 
  4.     <controls:PivotItem Header="girls"> 
  5.     </controls:PivotItem> 
  6.     <controls:PivotItem Header="either">          
  7.     </controls:PivotItem> 
  8. </controls:Pivot> 

很明顯,沒(méi)有數(shù)據(jù)我們看不到什么。下面繼續(xù)。

在ListBox中使用DataTemplate

對(duì)于每個(gè)PivotItem,我都添加了一個(gè)ListBox,并且在ListBox中,我會(huì)定義一個(gè)描述了每個(gè)數(shù)據(jù)項(xiàng)如何顯示的ItemTemplate。下面是我添加的XAML代碼:

  1. <controls:Pivot Title="BABY NAMES"> 
  2.     <controls:PivotItem Header="boys"> 
  3.         <ListBox x:Name="boyList" Margin="0,0,-12,0"> 
  4.             <ListBox.ItemTemplate> 
  5.                 <DataTemplate> 
  6.                     <StackPanel Margin="0,0,0,17" > 
  7.                         <TextBlock Text="{Binding Name}" TextWrapping="Wrap" Style="{StaticResource PhoneTextExtraLargeStyle}"/> 
  8.                     </StackPanel> 
  9.                 </DataTemplate> 
  10.             </ListBox.ItemTemplate> 
  11.         </ListBox> 
  12.     </controls:PivotItem> 
  13.     <controls:PivotItem Header="girls"> 
  14.         <ListBox x:Name="girlList" Margin="0,0,-12,0"> 
  15.             <ListBox.ItemTemplate> 
  16.                 <DataTemplate> 
  17.                     <StackPanel Margin="0,0,0,17" > 
  18.                         <TextBlock Text="{Binding Name}" TextWrapping="Wrap" Style="{StaticResource PhoneTextExtraLargeStyle}"/> 
  19.                     </StackPanel> 
  20.                 </DataTemplate> 
  21.             </ListBox.ItemTemplate> 
  22.         </ListBox> 
  23.     </controls:PivotItem> 
  24.     <controls:PivotItem Header="either"> 
  25.         <ListBox x:Name="allList" Margin="0,0,-12,0"> 
  26.             <ListBox.ItemTemplate> 
  27.                 <DataTemplate> 
  28.                     <StackPanel Margin="0,0,0,17" > 
  29.                         <TextBlock Text="{Binding Name}" TextWrapping="Wrap" Style="{StaticResource PhoneTextExtraLargeStyle}"/> 
  30.                     </StackPanel> 
  31.                 </DataTemplate> 
  32.             </ListBox.ItemTemplate> 
  33.         </ListBox> 
  34.     </controls:PivotItem> 
  35. </controls:Pivot> 

在這個(gè)系列中我們沒(méi)有提到DataBinding。你會(huì)注意到對(duì)于每個(gè)TextBlock,Text屬性的值都被定義為“{Binding Name}”。這意味著不論我向ListBox中傳入任何對(duì)象,TextBlock都會(huì)使用對(duì)象的Name屬性當(dāng)做它的Text屬性值。為了向ListBox中存入數(shù)據(jù),我們要在代碼后置的文件中寫少許代碼(這是MainPage.xaml.cs文件的所有內(nèi)容):

  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Linq;  
  4. using System.Net;  
  5. using System.Windows;  
  6. using System.Windows.Controls;  
  7. using System.Windows.Documents;  
  8. using System.Windows.Input;  
  9. using System.Windows.Media;  
  10. using System.Windows.Media.Animation;  
  11. using System.Windows.Shapes;  
  12. using Microsoft.Phone.Controls;  
  13.  
  14. namespace Day17_PivotControl  
  15. {  
  16.     public partial class MainPage : PhoneApplicationPage  
  17.     {  
  18.         BabyName[] names = new BabyName[10] {new BabyName("Steve", 1, 0),  
  19.                     new BabyName("Jennifer", 2, 0),  
  20.                     new BabyName("Alex", 1, 2),  
  21.                     new BabyName("Casey", 1, 2),  
  22.                     new BabyName("Quinn", 1, 2),  
  23.                     new BabyName("Anthony", 1, 0),  
  24.                     new BabyName("Sarah", 2, 0),  
  25.                     new BabyName("Parker", 2, 1),  
  26.                     new BabyName("Jessica", 2, 0),  
  27.                     new BabyName("Jeff", 1, 0)};  
  28.           
  29.         // Constructor  
  30.         public MainPage()  
  31.         {  
  32.             InitializeComponent();  
  33.             boyList.ItemsSource = from n in names  
  34.                     where (n.Gender1 == 1 || n.Gender2 == 1)  
  35.                     orderby n.Name  
  36.                     select new BabyName(n.Name, n.Gender1, n.Gender2);  
  37.  
  38.             girlList.ItemsSource = from n in names  
  39.                     where (n.Gender1 == 2 || n.Gender2 == 2)  
  40.                     orderby n.Name  
  41.                     select new BabyName(n.Name, n.Gender1, n.Gender2);  
  42.  
  43.             allList.ItemsSource = from n in names  
  44.                     orderby n.Name  
  45.                     select new BabyName(n.Name, n.Gender1, n.Gender2);  
  46.         }  
  47.     }  

你會(huì)看到對(duì)于每個(gè)ListBox,我都將BabyName對(duì)象的數(shù)組用簡(jiǎn)單的LINQ語(yǔ)法賦給了ItemsSource屬性。如果你不熟悉LINQ,你就錯(cuò)過(guò)了語(yǔ)言集成查詢功能。這有一個(gè)非常棒的LINQ學(xué)習(xí)資源列表。

定義了這些查詢后,我就可以輕松的對(duì)數(shù)據(jù)集合進(jìn)行排序,解析,并將相同數(shù)據(jù)的不同集合賦予每個(gè)PivotItem項(xiàng)。

就是這些內(nèi)容!通常情況下你不應(yīng)該在全景視圖或樞軸控件中使用超過(guò)7個(gè)項(xiàng)(如果你這么做了,你應(yīng)該想想用其他的方式……),這主要是因?yàn)槟鞘悄愕挠脩裟苡涀〉纳舷?。如果他們忘了,就不?huì)去用了,對(duì)嗎?(7是已知的人類記憶的上限,這也是為什么我們的電話號(hào)碼也是這個(gè)長(zhǎng)度。)

下載示例代碼

這個(gè)例子演示了如何在Windows Phone 7中實(shí)現(xiàn)一個(gè)樞軸控件,使用真實(shí)數(shù)據(jù)來(lái)填充ListBox。下載后可以邊玩邊學(xué)。

原作者:Jeff Blankenburg    譯者:金山崟霸

中文來(lái)源:http://www.cnblogs.com/porscheyin/archive/2010/12/23/1914676.html

英文來(lái)源:http://www.jeffblankenburg.com/2010/10/17/31-days-of-windows-phone-day-17-the-pivot-control/

【編輯推薦】

  1. 31天學(xué)會(huì)Windows Phone 7開(kāi)發(fā):全景視圖
  2. 31天學(xué)會(huì)Windows Phone 7開(kāi)發(fā):獨(dú)立存儲(chǔ)
  3. 31天學(xué)會(huì)Windows Phone 7開(kāi)發(fā):墓碑機(jī)制(多任務(wù))
  4. 31天學(xué)會(huì)Windows Phone 7開(kāi)發(fā):位置服務(wù)
  5. 31天學(xué)會(huì)Windows Phone 7開(kāi)發(fā):使手機(jī)震動(dòng)
責(zé)任編輯:王曉東 來(lái)源: 博客園
相關(guān)推薦

2012-08-13 09:56:45

Windows Pho

2010-12-01 13:40:13

樞軸控件Windows Pho

2012-06-25 16:14:26

Windows Pho

2012-08-01 10:26:33

Windows Pho

2012-06-11 13:08:10

Windows Pho

2012-06-12 10:43:20

Windows Pho

2012-06-06 13:48:34

Windows Pho

2012-08-16 11:31:30

Windows Pho

2012-06-13 13:01:57

Windows Pho

2012-08-02 10:16:39

Windows Pho

2012-06-21 10:59:31

Windows Pho

2012-07-13 14:41:12

2012-06-20 10:21:50

Windows Pho

2012-06-07 09:33:13

Windows Pho

2012-06-19 09:31:53

Windows Pho

2012-07-24 10:15:34

Windows Pho

2012-07-31 09:44:27

Windows Pho

2012-07-11 09:21:35

Windows Pho

2012-06-29 14:13:10

2013-04-19 16:52:24

Windows PhoWindows Pho
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)