成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Windows Phone開發(14):數據模板

移動開發
哪些控件最有可能用到數據模板?其實很多,只要是ContentControl的子類基本上都可以,如 Button等,當然,這些控件一般沒那必要,按鈕多數情況下顯示一些文本提示用戶用來干什么的就可以了,頂多你放個圖標在按鈕上,估計也很少人把一段視頻放在按鈕上吧,呵呵,其實,在WP里面,這是可以的,但沒有必要。對的,一般列表形式的控件就最有可能使用到數據模板了,比如ListBox控件,如果你的列表控件只是讓用戶看信息的,而不需要額外操作,你完全可以考慮使用ListBox的“老爸”——ItemsControl。

數據模板,如果你僅僅聽到這個名詞,你一定很迷惑,什么來的?用來干什么的?不急,親,今天,我們一起來探索一下吧。
用白話文說,數據模板就是用來規范數據的顯示方式的,關于模板,估計各位不陌生的,大家應該玩過PPT吧,都做過演示文稿吧,對啊,PPT里面有很多模板 的,明白了吧?不明白?那你一定填過表吧,如果報考什么考試的,你肯定會被要求填一些什么報名表之類的,或者說,找過工用嗎?是啊,做簡歷也有簡歷模板。 模板的用法就像做填空題,有了部分規范的內容,然后你按照這個規范,在特定的位置填上恰當的內容,你總不能說把你的姓名填到“性別”那里去吧,這就不符合 規范了。
好了,廢話講了不少,下面進入正題,你想想,哪些控件最有可能用到數據模板?哈,其實很多,只要是ContentControl的子類基本上都可以,如 Button等,當然,這些控件一般沒那必要,按鈕嘛,多數情況下顯示一些文本提示用戶用來干什么的就可以了,頂多你放個圖標在按鈕上,估計也很少人把一 段視頻放在按鈕上吧,呵呵,其實,在WP里面,這是可以的,但沒有必要。
對的,一般列表形式的控件就最有可能使用到數據模板了,比如ListBox控件,如果你的列表控件只是讓用戶看信息的,而不需要額外操作,你完全可以考慮使用ListBox的“老爸”——ItemsControl。

好,下面我們用一個例子看看在不自定義數據模板的情況下,ItemsControl的列表項是如何顯示的。
首先,當然是新建一個項目了,不用我介紹,相信各位都會。

  1. <phone:PhoneApplicationPage    
  2.     x:Class="DataTemplateSample.pageA"   
  3.     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"   
  4.     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"   
  5.     xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"   
  6.     xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"   
  7.     xmlns:d="http://schemas.microsoft.com/expression/blend/2008"   
  8.     xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"   
  9.     FontFamily="{StaticResource PhoneFontFamilyNormal}"   
  10.     .......   
  11.     >   
  12.    
  13.     <ItemsControl x:Name="myItemControl"/>   
  14.    
  15. </phone:PhoneApplicationPage>

然后,切換到代碼頁,把myItemControl的數據源設置為一個字符串數組。

  1. public pageA()   
  2. {   
  3.     InitializeComponent();   
  4.    
  5.     this.myItemControl.ItemsSource = new string[] {   
  6.                 "玉米炒蛋",   
  7.                 "燒鴨飯",   
  8.                 "青瓜炒肉",   
  9.                 "水煮豆腐",   
  10.                 "糯米雞"   
  11.     };   
  12. }   

好的,不要流口水啊,現在,你可以運行你的超級項目了。
你應該發現了,列表的每一項都是以文本的方式顯示,其實,它內部默認就是一個TextBlock,就是用來顯示文本的。
那么,如果我設置的數據源不是字符會怎么樣呢?
好現在看第二個例子。
先做好布局,和剛才的例子一樣。

  1. <phone:PhoneApplicationPage    
  2.     x:Class="DataTemplateSample.pageB"   
  3.     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"   
  4.     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"   
  5.     xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"   
  6.     xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"   
  7.     xmlns:d="http://schemas.microsoft.com/expression/blend/2008"   
  8.     xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"   
  9.      .......   
  10.     >   
  11.     <ItemsControl Name="myItemsControl" FontSize="52"/>   
  12. </phone:PhoneApplicationPage>  

接著我們定義一個商品類,包含三個屬性:商品名稱,單價,條碼。
并把ItemsControl的數據源設置為商品類的集合。

  1. public partial class pageB : PhoneApplicationPage   
  2. {   
  3.     public pageB()   
  4.     {   
  5.         InitializeComponent();   
  6. em.Collections.ObjectModel.ObservableCollection<Goods> goodsList = new System.Collections.ObjectModel.ObservableCollection<Goods>   
  7.         {   
  8.             new Goods{GoodsName="紙飛機",Price=0.02f,BarCode ="21001475"},   
  9.             new Goods{GoodsName="雞蛋",Price=0.6f,BarCode="21002345"},   
  10.             new Goods{GoodsName="干面包",Price=2.5f,BarCode="21003087"},   
  11.             new Goods{GoodsName="地溝油",Price=33.4f,BarCode="21002020"},   
  12.             new Goods{GoodsName="茅臺啤酒",Price=108f,BarCode="21009331"}   
  13.         };   
  14.         this.myItemsControl.ItemsSource = goodsList;   
  15.     }   
  16. }   
  17. public class Goods   
  18. {   
  19.     /// <summary>   
  20.     /// 商品價格   
  21.     /// </summary>   
  22.     public string GoodsName { getset; }   
  23.     /// <summary>   
  24.     /// 商品單價   
  25.     /// </summary>   
  26.     public float Price { getset; }   
  27.     /// <summary>   
  28.     /// 商品條形碼   
  29.     /// </summary>   
  30.     public string BarCode { getset; }   
  31. }   

運行一下,啊,你會大吃一驚,怎么顯示這內容?
(圖1)

http://s3.51cto.com/wyfs01/M01/07/10/wKioOVFuNcWx88u6AACMJKFT_tM005.jpg

 

前文說了,數據模板默認是TextBlock控件,只能顯示文本,那么,當它遇到非文本數據時,就會嘗試調用數據源中類型的ToString方法,所以剛 才的示例才會顯示出類名,這是從Object類繼承過來的ToString方法,現在我們把Goods類改一下,重寫它的ToString方法,看看結果是什么。

  1. public override string ToString()   
  2. {   
  3.     return this.GoodsName;   
  4. }   

這時候你再運行一下,看到商品名稱了吧?

然而,你會發現,好像還沒有滿足我們的需求,我們希望每一項中同時顯示商品名,單價,條碼值,那怎么辦呢?是的,這時候,就真的要自定義數據模板了。

把上面的XAML改一下。

  1. <ItemsControl Name="myItemsControl" FontSize="52">   
  2.     <ItemsControl.ItemTemplate>   
  3.         <DataTemplate>   
  4.             <Grid Margin="0,0,0,27">   
  5.                 <Grid.ColumnDefinitions>   
  6.                     <ColumnDefinition Width="auto"/>   
  7.                     <ColumnDefinition Width="*"/>   
  8.                 </Grid.ColumnDefinitions>   
  9.                 <Grid.RowDefinitions>   
  10.                     <RowDefinition Height="auto"/>   
  11.                     <RowDefinition Height="auto"/>   
  12.                     <RowDefinition Height="auto"/>   
  13.                 </Grid.RowDefinitions>   
  14.                 <TextBlock Grid.Column="0" Grid.Row="0" Text="商品:"/>   
  15.                 <TextBlock Grid.Column="1" Grid.Row="0" Text="{Binding GoodsName}"/>   
  16.                 <TextBlock Grid.Column="0" Grid.Row="1" Text="單價:"/>   
  17.                 <TextBlock Grid.Column="1" Grid.Row="1" Text="{Binding Price}"/>   
  18.                 <TextBlock Grid.Column="0" Grid.Row="2" Text="條碼:"/>   
  19.                 <TextBlock Grid.Column="1" Grid.Row="2" Text="{Binding BarCode}"/>   
  20.             </Grid>   
  21.         </DataTemplate>   
  22.     </ItemsControl.ItemTemplate>   
  23. </ItemsControl>   

好了,現在就基本達到我們的要求了。
(圖2)

責任編輯:閆佳明 來源: oschina
相關推薦

2013-04-17 14:19:51

Windows PhoWindows Pho

2012-06-06 13:48:34

Windows Pho

2013-07-30 12:37:56

Windows PhoWindows Pho

2010-04-21 17:07:54

Windows Pho

2013-04-17 14:00:06

Windows PhoWindows Pho

2011-06-07 12:42:15

Windows Pho

2013-04-16 17:02:50

Windows Pho概論

2013-04-19 16:34:56

Windows PhoWindows Pho

2013-07-30 11:18:37

Windows PhoWindows Pho

2010-04-08 17:40:23

Windows Pho

2010-07-16 15:29:02

Windows Pho

2012-08-16 10:35:50

Windows Pho

2011-06-07 11:35:38

Windows Pho

2013-07-31 13:03:51

Windows PhoWindows Pho

2013-04-17 14:47:19

Windows PhoWindows Pho

2013-04-19 16:52:24

Windows PhoWindows Pho

2013-07-31 12:50:39

搭建Windows PWindows Pho

2013-07-31 13:13:50

Windows PhoMVVM模式

2010-12-14 18:48:49

微軟

2012-06-04 14:47:58

Windows Pho
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 毛片一区二区三区 | 亚洲一区二区三区免费视频 | 最新国产精品精品视频 | 国产日韩欧美电影 | 中文字幕免费在线 | 国产精品婷婷 | 欧美区日韩区 | 国产成年人小视频 | 久久亚洲欧美日韩精品专区 | 奇米四色影视 | 在线观看电影av | 欧美一级黄色免费看 | h片在线看 | 亚洲精品福利视频 | 婷婷五月色综合香五月 | 国产黄色在线观看 | 中文字幕一区二区三区日韩精品 | 一级在线毛片 | 一区在线免费视频 | 亚洲欧美高清 | 欧美一区视频 | 日韩精品一区二区三区中文字幕 | 黄色成人在线网站 | 欧美性tv| 特级丰满少妇一级aaaa爱毛片 | 国产最新网址 | 免费能直接在线观看黄的视频 | 日韩视频在线免费观看 | 国产精品成人在线 | 欧美日韩精品专区 | 久久亚| 亚洲午夜精品一区二区三区他趣 | 国产高清免费在线 | 日韩欧美亚洲 | 高清视频一区二区三区 | 成人精品久久 | 一区二区三区四区毛片 | 国产午夜精品久久久久 | 亚洲一区有码 | 91免费观看国产 | 成人影院午夜 |