国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

WPF數據綁定在目錄樹構造中作用體現

開發 開發工具
當我們使用WPF數據綁定創建一個目錄樹的時候,可以分為三步實現,分別為:定義要綁定的數據類型;創建一個數據提供類;設計用戶界面。

WPF開發工具的使用,為開發人員帶來了非常大的作用。開發人員在實際開發編程中,可以輕松靈活的實現與MAC相媲美的圖形界面。#t#

如果使用了WPF而不使用數據綁定(手工在界面和數據間進行同步),總會感覺不值.但是大部分討論WPF數據綁定的文章,主題大多集中在ListBox這樣平坦的數據集合上,講如何綁定層次結構數據的比較少,這里我就通過一個簡單的顯示磁盤目錄樹的例子來展示如何完成這樣的任務.

WPF數據綁定第一步,當然是定義要綁定的數據類型了.

在目錄樹這個例子中,每個TreeViewItem要顯示的數據可以用System.IO.DirectoryInfo來表示,但是這樣做有一個麻煩:DirectoryInfo只能通過GetDirectories()方法來獲取子目錄,但是WPF里的數據綁定則更傾向于使用屬性在數據間導航,所以為了更方便地使用WPF數據綁定,我們最好還是自定義一個類來完成這樣的工作:

  1. using System.Collections.Generic;  
  2. using System.IO;  
  3. namespace WpfApplication1  
  4. {  
  5. class BindDirectory  
  6. {  
  7. public BindDirectory(string 
    directoryPath)  
  8. {  
  9. //正規化目錄路徑,確保Path以'\\'結尾  
  10. directoryPathdirectoryPath = 
    directoryPath.TrimEnd('\\');  
  11. Path = directoryPath + '\\';  
  12. //計算出目錄名稱(不包含路徑)  
  13. int indexLastSlash = directoryPath.
    LastIndexOf('\\');  
  14. if (indexLastSlash >= 0)  
  15. {  
  16. Name = directoryPath.Substring
    (indexLastSlash + 1);  
  17. }  
  18. else  
  19. {  
  20. Name = directoryPath;  
  21. }  
  22. }  
  23. public string Name  
  24. {  
  25. get;  
  26. private set;  
  27. }  
  28. public string Path  
  29. {  
  30. get;  
  31. private set;  
  32. }  
  33. public IEnumerable< BindDirectory> 
    Directories  
  34. {  
  35. get  
  36. {  
  37. //延遲加載  
  38. if (directories == null)  
  39. {  
  40. directories = new List
    < BindDirectory>();  
  41. foreach (string d in Directory.
    GetDirectories(Path))  
  42. {  
  43. directories.Add(new 
    BindDirectory(d));  
  44. }  
  45. }  
  46. return directories;  
  47. }  
  48. }  
  49. List< BindDirectory> directories;  
  50. }  

 

這個類所作的工作很簡單,就是正規化目錄路徑,獲取目錄名稱,以及延遲加載子目錄(以提升性能)的列表,我們的界面也只要求它具有這些功能就行了.

WPF數據綁定第二步,創建一個數據提供類(DataProvider)

我們可以在Window的代碼里設置界面的DataContext,ItemsSource等屬性來讓界面顯示指定的數據,也可以構造一個專門提供數據的類,完全在界面(XAML)里指定,這里使用的是第二種方法:

  1. using System.Collections.Generic;  
  2. using System.IO;  
  3. namespace WpfApplication1  
  4. {  
  5. class BindDirectoryList : 
    List
    < BindDirectory> 
  6. {  
  7. public BindDirectoryList()  
  8. {  
  9. foreach (var drive in 
    DriveInfo.GetDrives())  
  10. {  
  11. Add(new BindDirectory(drive.
    RootDirectory.FullName));  
  12. }  
  13. }  
  14. }  

 

這個類就更簡單了,僅僅是在創建的時候加載所有的磁盤的根目錄.

WPF數據綁定第三步,設計用戶界面

只需要在Window中添加一個TreeView,然后修改幾行代碼,就能輕松地顯示我們的數據了:

  1. < !--xml:sample這一行用來引入
    我們自己代碼的命名空間--
    > 
  2. < Window x:Class="WpfApp
    lication1.Window1"
     
  3. xmlns="http://schemas.
    microsoft.com/winfx/2006/
    xaml/presentation"
     
  4. xmlns:x="http://schemas.
    microsoft.com/winfx/2006/xaml"
     
  5. xmlns:sample="clr-namespace:
    WpfApplication1"
     
  6. Title="Window1" Height="300" 
    Width="300"> 
  7. < Window.Resources> 
  8. < !--引入我們自己的數據提供對象--> 
  9. < ObjectDataProvider x:Key="drives" 
    ObjectType="{x:Type sample:
    BindDirectoryList}"
     /> 
  10. < !--設置如何顯示數據,以及如何獲
    取下一級數據的列表--
    > 
  11. < HierarchicalDataTemplate x:Key=
    "itemTemplate" DataType="{x:Type 
    sample:BindDirectory}"
     ItemsSource=
    "{Binding Directories}"> 
  12. < TextBlock Text="{Binding Name}" /> 
  13. < /HierarchicalDataTemplate> 
  14. < /Window.Resources> 
  15. < TreeView ItemsSource="{Binding 
    Source={StaticResource drives}}"
     
  16. ItemTemplate="{StaticResource 
    itemTemplate}"
     > 
  17. < /TreeView> 
  18. < /Window> 

這里我們在XAML里定義了一個drives對象,它的類型為BindDirectoryList,創建時會自動加載磁盤的根目錄;

我們在WPF數據綁定中還定義了一個針對BindDirectory類型的層次型數據模板itemsTemplate,指定了要獲取此類型的數據的子數據需要通過Directories屬性,并且告訴WPF用一個TextBlock來顯示它的名稱.

最后,我們設置一下TreeView的ItemsSource和ItemTemplate就完成工作了.

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

2009-12-24 16:57:53

WPF密碼

2009-12-29 14:00:02

WPF Dispatc

2023-10-07 11:04:58

WPF數據UI

2009-12-24 17:52:05

WPF觸發器

2009-12-25 16:40:49

WPF優勢

2009-12-29 14:58:31

WPF優點

2009-12-24 11:15:59

WPF數據綁定

2021-02-11 08:27:28

數據

2009-12-23 15:16:52

WPF數據綁定

2010-02-23 16:15:24

WCF Endpoin

2009-12-28 16:45:31

WPF窗體

2009-12-25 15:29:12

WPF缺陷

2009-12-23 15:57:40

WPF傳遞事件

2011-03-30 09:13:13

靜態類Windows Pho

2009-12-04 17:31:32

PHP編碼轉換

2010-01-14 10:35:34

VB.NET指針

2009-11-25 17:54:47

PHP數組函數

2010-02-25 17:22:39

WCF服務行為

2010-02-02 13:15:00

C++ lambda函

2010-03-01 17:52:03

WCF選擇綁定
點贊
收藏

51CTO技術棧公眾號

一本一道波多野毛片中文在线 | 国产日本欧美一区二区| 国产精品91久久久久久| 欧美三级电影一区二区三区| 国产精品福利一区二区| 2021国产视频| 亚洲综合另类| 国产中文字幕日韩| 久久影院资源站| xvideos成人免费中文版| 里番在线播放| 精品日韩在线观看| 美女av在线播放| 777亚洲妇女| 激情影院在线观看| 欧美一激情一区二区三区| 91欧美在线视频| 欧美日韩国产免费一区二区 | 国产在线不卡一区| 亚洲国产成人不卡| 一区二区精品| 日本一区二区不卡高清更新| 日韩欧美视频专区| 57pao成人永久免费视频| 国产一区二区三区亚洲综合| 精品欧美一区二区三区精品久久| 超碰在线首页| 亚洲人成人一区二区在线观看 | 精品系列免费在线观看| 91美女福利视频高清| 66精品视频在线观看| 亚洲一区二区国产| 草莓视频丝瓜在线观看丝瓜18| 欧美色欧美亚洲高清在线视频| 五月综合网站| 国产精品麻豆视频| 无人在线观看的免费高清视频| 久色成人在线| 国产精品日韩一区二区| 色综合综合网| 日韩美女中文字幕| 天堂日韩电影| 日韩av大片在线| 中文字幕区一区二区三| 亚洲精品国产suv| 成人在线播放视频| 日韩欧美在线字幕| 欧美天天影院| 欧美一区二区精美| 免费污视频在线| 亚洲第一区第一页| 欧洲av不卡| 理论片在线不卡免费观看| 欧亚av在线| 尤物yw午夜国产精品视频明星| 欧美激情喷水| 久久av.com| 亚州av日韩av| 91九色蝌蚪嫩草| 久久精品官网| 成人手机在线播放| www日韩大片| 二区视频在线| 精品女厕一区二区三区| 天堂av电影在线观看| 亚洲成a人片在线不卡一二三区| xxxx影院| 欧美探花视频资源| 啦啦啦中文在线观看日本| 日韩国产激情在线| 男女啪啪999亚洲精品| 97在线视频免费播放| 亚洲精品456| 国产精品视频一区二区高潮| 国产aⅴ精品一区二区三区久久| 国产精品18久久久久久首页狼| 亚洲国产成人精品女人| 日本一区二区三区四区高清视频| 精彩视频一区二区三区| 久久视频这里有精品| 亚洲一区二区三区影院| 伊人精彩视频| 欧美一区欧美二区| a∨色狠狠一区二区三区| 538国产精品一区二区在线| 国产精品地址| 无颜之月在线看| 亚洲免费av高清| 羞羞网站在线免费观看| 国产亚洲视频中文字幕视频| 欧美国产不卡| 日本成人三级电影网站| 国产日韩欧美高清在线| 精品视频三区| 日韩一区二区三区国产| 日韩综合一区| 国产爆乳无码一区二区麻豆 | 日韩三级免费| 美女999久久久精品视频| 日韩av自拍| 国产在线无码精品| 亚洲日本va在线观看| av每日在线更新| 久久夜色精品国产亚洲aⅴ| 色婷婷综合网| 国产一区 在线播放| 午夜久久电影网| 松下纱荣子在线观看| 日本在线精品视频| 麻豆精品蜜桃视频网站| 3d动漫成人在线| 国产丝袜一区二区三区| 久久久久免费av| 狠狠97人人婷婷五月| 欧美少妇xxx| 久久a爱视频| 亚洲自拍偷拍一区二区三区| 一区二区三区国产精品| 国产综合色区在线观看| 国产精品国产三级欧美二区| 粉嫩av亚洲一区二区图片| 尤物视频在线观看| 久久精品2019中文字幕| 久久成人国产| 性一爱一乱一交一视频| 久久精品电影网| 久久精品99久久久| 中文字幕中文乱码欧美一区二区| 2020国产精品极品色在线观看| 亚洲精品老司机| 久久一级电影| 久久狠狠久久| 97成人在线| 精品久久久久久久久久久aⅴ| 亚洲欧美日韩爽爽影院| 第四色在线一区二区| 成人午夜免费在线视频| av二区三区| 一本一本a久久| 欧美日韩国产va另类| 91蝌蚪porny| 看黄网站在线观看| 欧美日韩另类丝袜其他| 都市激情亚洲色图| 男人的j进女人的j一区| 日本视频在线免费观看| 免费av在线一区二区| 欧美日韩另类国产亚洲欧美一级| 最新不卡av| 国产一区二区三区四区五区在线 | 亚洲91av| 91精品久久久久久久久| 亚洲网站在线播放| 91精品国产色综合久久不卡粉嫩| av动漫在线看| 中文字幕欧美激情| 美女精品在线观看| 亚洲都市激情| 青青青青在线| 成人au免费视频影院| 奇米一区二区三区四区久久| 精品国产青草久久久久福利| 国产精品久久久久婷婷二区次| 日韩在线一区二区三区| 亚洲小说春色综合另类电影| 成人av小说网| 成人拍拍拍在线观看| 国产主播在线看| 欧美一区二区三区另类| 蜜桃视频在线入口www| 久久99精品久久久久子伦| 九九视频这里只有精品| 国产精品成人v| 国产亚洲a∨片在线观看| 在线精品视频小说1| 悠悠资源网久久精品| 日韩色性视频| 色999久久久精品人人澡69| 伊伊综合在线| 亚洲性图自拍| 色综合999| 岛国在线大片| 88av在线| 四虎成人免费在线| 99re99| 国产极品尤物在线| 久久久亚洲国产精品| 久久精品国产一区二区三区不卡| …久久精品99久久香蕉国产| 在线看日韩欧美| 中文字幕无线精品亚洲乱码一区| 久久久综合av| 91亚洲精品在线| 无需播放器的av| 国产精品无码专区av在线播放| 五月天激情图片| 制服诱惑一区| 中文字幕4区| 国产综合色在线观看| 8848成人影院|