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

WPF數據模板輕松實現數據顯示

開發 開發工具
WPF數據模板主要適用于Content Control類控件與Items Control類控件。在實際應用中可以幫助我們實現許多功能的需求。

我們在進行開發程序的時候,經常會碰到要處理一個圖形界面的需求。微軟公司根據這一需求,開發了一個叫做WPF的圖形界面顯示工具。#t#

在WPF中我們可以為自己的數據定制顯示方式,也就是說雖然某數據數據是一定的,但我們可以做到讓它的表現方式多種多樣,比如一個時間,在以前我們一般使用一個字符串(比如“12:03”)來顯示,但我們為什么就不能顯示一個小時鐘呢,其實這更合乎情理,利用WPF數據模板技術隨意并輕松地表現你的數據.

WPF數據模板適用于Content Control類控件與Items Control類控件.

我們假設有如下一個類

  1. using System;  
  2. namespace Demo  
  3. {  
  4. public class People  
  5. {  
  6. private string name;  
  7. private string photo;  
  8. public People(string 
    name, string photo)  
  9. {  
  10. this.name = name;  
  11. this.photo = photo;  
  12. }  
  13. public string Name  
  14. {  
  15. get  
  16. {  
  17. return this.name;  
  18. }  
  19. set  
  20. {  
  21. this.name = value;  
  22. }  
  23. }  
  24. public string Photo  
  25. {  
  26. get  
  27. {  
  28. return this.photo;  
  29. }  
  30. set  
  31. {  
  32. this.photo = value;  
  33. }  
  34. }  
  35. }  

這個類很簡單地表示了一個人,他的姓名和他的照片(路徑)

如果在我們的軟件中有一個列表控件ListBox來顯示一個由多個人組成的列表,在.net 3.0以前我們可能就只能用文本來列出人的姓名而已,或者花不少的精力來重寫列表控件以便在列表中在顯示人名的同時顯示照片.

參考以下代碼:

  1. < ListBox x:Name="ListBox_
    PeopleList"
     ItemTemplate="
    {StaticResource MyTemplate}"
     /> 

我們定義了一個ListBox,并將其ItemTemplate制定為我們自定義的MyTemplate,也就是說列表項將按照MyTemplate制定的方式來顯示列表內容。
這樣我們就可以發揮我們的想像力來自定義MyTemplate
為了能在XAML中使用我們的People類,我們需要將其名字空間引入,參考以下代碼:

  1. xmlns:demo="clr-nam
    espace:Demo"
      

其中Demo是我們的People類所在的名字空間,以后可以使用demo來表示這個名字空間了.

下面的代碼來定義我們的MyTemplate的WPF數據模板,以便告訴我們的列表如何來顯示他的項目:

  1. < Window.Resources>   
  2. < !--列表模板--> 
  3. < DataTemplate x:Key="MyTemplate"
     DataType="{x:Type demo:People}"> 
  4. < Grid VerticalAlignment="Center" 
    HorizontalAlignment="Center" 
    Margin="4,4,4,4" > 
  5. < Grid.ColumnDefinitions> 
  6. < ColumnDefinition Width="Auto"/> 
  7. < ColumnDefinition Width="Auto"/> 
  8. < /Grid.ColumnDefinitions> 
  9. < Image Source="{Binding Photo}" 
    Width="50" Height="50" Grid.Column=
    "0" Grid.RowSpan="1"/> 
  10. < TextBlock Text="{Binding Name}" 
    Grid.Column="1" Grid.ColumnSpan="1" 
    HorizontalAlignment="Center" Vertical
    Alignment
    ="Center"/> 
  11. < /Grid> 
  12. < /DataTemplate> 
  13. < /Window.Resources> 

我們將WPF數據模板定義為窗口的資源,資源保存在一個資源字典中的,x:Key="MyTemplate" 表示其在資源字典中的鍵,DataType="{x:Type demo:People}"表示該數據模板針對的數據類型是demo名字空間下的People類,接下來在Gird中我們定義了該數據模板的視覺樹,這也是我們的工作重心,即該視覺樹定義了如何顯示我們的數據。

我們使用了一個Image控件并將其Source綁定到People的Photo屬性上,這樣以便在該Imag控件上顯示照片,然后在Image的右邊我們使用一個TextBlock控件來顯示人名(將People的Name屬性綁定到TextBlock的Text屬性上)。

注意到這個數據模板實際上在干什么:它定義了People類型對象的表現方式,在這里是顯示People的照片并在照片的右方顯示姓名。

以后我們需要People對象按這種方式展示給用戶的時候,我們只要將該WPF數據模板指定給要顯示People對象的那個控件就可以了。

比如

  1. < ListBox x:Name=
    "ListBox_PeopleList" 
    ItemTemplate="{Static
    Resource MyTemplate}"
     /> 

就告訴我們的列表控件按照MyTemplate定義的方式來顯示其項目。

呵呵,這樣是不是比以前Code方式來打造一個個性列表控件來得更方便。

責任編輯:曹凱 來源: 博客園
相關推薦

2010-08-05 15:06:19

Flex數據綁定

2011-04-14 10:18:20

數據遷移

2009-12-28 11:14:29

WPF顯示文本

2010-09-28 12:59:45

JavaScriptDOM

2024-12-31 12:09:31

2024-01-26 13:23:22

數據分析指標監控型

2011-04-13 10:49:53

2009-03-05 10:10:52

餅圖數據庫JSP

2024-02-05 13:39:00

隱私數據脫敏

2009-12-23 18:06:25

WPF模板

2023-10-07 11:04:58

WPF數據UI

2009-12-24 11:15:59

WPF數據綁定

2021-02-11 08:27:28

數據

2023-12-24 12:56:14

C++函數語言

2010-08-18 09:03:46

jQueryJSONTrimpath

2025-01-02 10:10:51

2015-10-28 14:03:32

數據遷移數據

2016-03-21 09:25:01

2009-12-23 17:57:22

WPF默認模板

2009-12-23 15:16:52

WPF數據綁定
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产成人在线视频播放 | 国产一区二区在线播放 | 欧美亚洲国产日韩 | 欧美一级黄带 | 日韩一级免费电影 | 精品少妇一区二区三区在线播放 | 亚洲不卡在线观看 | 美女视频黄色片 | 黄色一级大片在线免费看产 | 久久精品一区二区三区四区 | 三级黄色片在线观看 | 91精品国产乱码麻豆白嫩 | 香蕉久久久久久 | 成年男女免费视频网站 | 欧美精品一区在线 | 久久精品久久综合 | 欧美久久一级特黄毛片 | 一区二区三区av | 久久久久久99 | 综合久久综合久久 | 午夜寂寞影院在线观看 | 日韩欧美国产精品一区二区三区 | 99精品国自产在线观看 | 欧美一区二区黄 | 久久久999成人 | 久久69精品久久久久久久电影好 | 国产一区二区久久久 | 欧美黄在线观看 | 国内自拍视频在线观看 | 在线观看www视频 | 日韩av福利在线观看 | 国产精品美女久久久久久久网站 | 日本不卡一区二区 | 国产成人在线观看免费 | 久久一 | 久久天天综合 | 综合色播| 亚洲三区视频 | 国产午夜精品一区二区三区嫩草 | 日韩在线一区二区三区 | 久久精品女人天堂av |