|
當(dāng)你使用最新的操作系統(tǒng),在最新的框架上構(gòu)建應(yīng)用程序,并且使用最新版本的Visual Studio的時(shí)候,你可以使用許多令人興奮的新特性。你可以學(xué)習(xí)一下怎樣使用Visual Studio 2010, WPF 4 和 the Windows API Code Pack給你的應(yīng)用程序添加Windows 7 UI。
Windows 7 UI有很多令人興奮的元素,例如:全新的任務(wù)欄,或者跳轉(zhuǎn)列表,視覺(jué)體驗(yàn)本身并不屬于應(yīng)用程序的范疇,但是它是應(yīng)用程序體驗(yàn)的重要組成部分。作為一個(gè)WPF開(kāi)發(fā)者,你可以把那些元素添加到你的Windows7應(yīng)用程序中,隨心所欲地定制它們?cè)谥鞔翱趦?nèi)部和外部的行為。
使用WPF4,你幾乎可以訪問(wèn)所有的Windows 7 UI特性。WPF4內(nèi)置了對(duì)Windows7任務(wù)欄的支持,其中包括可以自定義的縮略圖預(yù)覽,通過(guò)進(jìn)度條和“圖標(biāo)覆蓋”(icon overlay)從任務(wù)欄獲得視覺(jué)反饋,以及可以自定義的跳轉(zhuǎn)列表。雖然這些特性最終是通過(guò)Windows 7的原生API來(lái)提供的,但是WPF用托管的代碼對(duì)它們進(jìn)行了封裝,通過(guò)WPF類的形式把它們暴露出來(lái)。這意味著你可以在XAML中創(chuàng)建跳轉(zhuǎn)列表對(duì)象和其他的UI對(duì)象,并且可以通過(guò)許多依賴屬性(dependency property)來(lái)綁定它們。
Visual Studio 2010本身就包含許多和WPF有關(guān)的新特性,其中包括一個(gè)全新的可視化設(shè)計(jì)器,拖放式的數(shù)據(jù)綁定,以及在XAML中的標(biāo)記擴(kuò)展的智能感知。這些特性已經(jīng)和WPF的任務(wù)欄類整合到一起了,它們可以讓你充分地利用Visual Studio的最新版本的全部功能,來(lái)構(gòu)建時(shí)尚的Windows7應(yīng)用程序。
雖然WPF4對(duì)任務(wù)欄有很好的支持,但是,還有一些其他方面的Windows 7 API它并沒(méi)有封裝。例如:Windows7樣式的通用對(duì)話框。你只能使用Windows API Code Pack和一個(gè)外部的托管封裝庫(kù)在WPF中訪問(wèn)這些API。Windows API Code Pack有它自己的一套shell和任務(wù)欄類,在WPF 3.5 SP1中也可以使用它們。
(Windows API Code Pack的下載地址:http://code.msdn.microsoft.com/WindowsAPICodePack)
數(shù)據(jù)綁定和Visual Studio 2010的WPF設(shè)計(jì)器
在接觸Windows7的新特性以前,讓我們先來(lái)看一看在全新的Visual Studio 2010的WPF設(shè)計(jì)器中的一個(gè)基礎(chǔ)的數(shù)據(jù)驅(qū)動(dòng)的WPF應(yīng)用程序。在Visual Studio 2010中,你可以在設(shè)計(jì)的時(shí)候通過(guò)把數(shù)據(jù)源拖放到可視化的設(shè)計(jì)器中的方式來(lái)創(chuàng)建數(shù)據(jù)綁定。
如果你把一個(gè)數(shù)據(jù)源項(xiàng)拖放到一個(gè)現(xiàn)有的控件上(例如,把一個(gè)文本字段拖放到一個(gè)文本框中),那么設(shè)計(jì)器會(huì)為那個(gè)數(shù)據(jù)源創(chuàng)建一個(gè)窗口資源,然后把這個(gè)字段綁定到那個(gè)控件上。如果你把一個(gè)數(shù)據(jù)源項(xiàng)拖放到一個(gè)容器上,那么設(shè)計(jì)器會(huì)創(chuàng)建一個(gè)相應(yīng)的綁定控件,然后把這個(gè)控件添加到那個(gè)容器中。如果默認(rèn)的類型并不合適,你可以自己設(shè)置這個(gè)綁定控件的類型。在截圖1中,我把一個(gè)來(lái)自于AdventureWorks 2008樣例數(shù)據(jù)庫(kù)的數(shù)據(jù)表拖放到一個(gè)窗口中,設(shè)計(jì)器自動(dòng)地創(chuàng)建了一個(gè)數(shù)據(jù)網(wǎng)格控件。當(dāng)我們開(kāi)發(fā)在Windows7任務(wù)欄上顯示進(jìn)度的功能的時(shí)候,我們將會(huì)用到這個(gè)數(shù)據(jù)網(wǎng)格。
(截圖1:把一個(gè)表數(shù)據(jù)源拖放到主窗口上,會(huì)生成了一個(gè)數(shù)據(jù)網(wǎng)格控件)
除了基礎(chǔ)的創(chuàng)建之外,我們還做了一點(diǎn)額外的工作,我們使用漸變式的畫刷來(lái)設(shè)置窗口的背景。Visual Studio 2010內(nèi)置了一個(gè)可視化的畫刷編輯器,這讓創(chuàng)建和使用漸變式的畫刷,圖像畫刷,以及純色的畫刷變得更加容易了。在一個(gè)畫刷屬性的屬性編輯器上下拉可以直接在編輯器中看到反饋,這可以讓你以可視化的方式創(chuàng)建漸變式的畫刷,或者為一個(gè)圖像畫刷選擇一個(gè)圖像。
(截圖2:使用可視化的畫刷編輯器創(chuàng)建一個(gè)背景畫刷。)
和Windows7的任務(wù)欄進(jìn)行交互
在Windows7中,你可以通過(guò)一個(gè)橫跨任務(wù)項(xiàng)背景的進(jìn)度條,在任務(wù)欄上顯示需要長(zhǎng)時(shí)間才能完成的操作的進(jìn)度。InterNET Explorer使用任務(wù)欄進(jìn)度條來(lái)跟蹤文件的下載情況就是一個(gè)很好的例子。
你可以通過(guò)TaskbarItemInfo類和Windows7的任務(wù)欄進(jìn)行交互,在主窗口上,這個(gè)類是通過(guò)一個(gè)依賴屬性暴露出來(lái)的。你可以在XAML中創(chuàng)建一個(gè)TaskbarItemInfo對(duì)象:
1. <Window.TaskbarItemInfo>
2. <TaskbarItemInfo x:Name="TaskbarItemInfo1"
Description="Customer Browser: Using WPF 4 on Windows 7”>
3. </TaskbarItemInfo>
4. </Window.TaskbarItemInfo>
NET技術(shù):使用VS2010為Windows7編寫一個(gè)殺手級(jí)WPF應(yīng)用,轉(zhuǎn)載需保留來(lái)源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。