一区二区久久-一区二区三区www-一区二区三区久久-一区二区三区久久精品-麻豆国产一区二区在线观看-麻豆国产视频

開(kāi)發(fā)WinRT自定義組件

最近在工作中開(kāi)始開(kāi)發(fā)組件,滿足公司的業(yè)務(wù)與技術(shù)需求,同時(shí)也在規(guī)劃組件的開(kāi)發(fā)路線,為公司的下一代產(chǎn)品做好技術(shù)儲(chǔ)備。

元旦假期看了看Windows 8中的組件開(kāi)發(fā),除了傳統(tǒng)的WPF、Windows Form、Silverlight、ASP.NET組件之外,還新增了一種WinRT組件。

WinRT = Windows Runtime,是Windows 8 新引入的一個(gè)新的框架,意在為Windows 平臺(tái)上的開(kāi)發(fā)提供一種語(yǔ)言無(wú)關(guān)、高度智能化的平臺(tái)。

不是為了取代.NET、Win32等,而是為不同語(yǔ)言編寫(xiě)的程序提供統(tǒng)一支持,尤其是Metro風(fēng)格程序。

測(cè)試代碼下載

一、準(zhǔn)備工作

安裝Windows 8 Developer Preview、VS 11 Developer Preview等開(kāi)發(fā)工具。

安裝Win8時(shí)注意要用Windows Live ID登錄,若沒(méi)有賬戶可以先注冊(cè)一個(gè),否則后面會(huì)無(wú)法運(yùn)行Metro程序。

安裝Win8后注意更新一下顯卡驅(qū)動(dòng),AMD官方提供了Windows 8的驅(qū)動(dòng),Nvidia使用Win7的驅(qū)動(dòng)即可,確保分辨率在1024 X 768或更高。

VS 11 建議卸載自帶的Express版本,安裝全功能的Developer Preview版本。

此外,SQL Server 2012 RC0也已經(jīng)發(fā)布,建議安裝。

二、開(kāi)始開(kāi)發(fā)

2.1、創(chuàng)建一個(gè)Windows Metro Style的Class Library項(xiàng)目:

2.2、添加一個(gè)類(lèi):

2.3、寫(xiě)一個(gè)ButtonX,繼承自Button:

WinRT的組件大部分位于Windows.UI.Xaml.Controls命名空間:

2.4、WinRT與WPF、Silverlight組件類(lèi)似,我就照著葫蘆畫(huà)飄,在ButtonX中添加如下代碼:

2.5、新建一個(gè)Themes文件夾,在其中添加Generic.xaml文件,因?yàn)闆](méi)有資源字典這種項(xiàng)類(lèi)型,故需要添加一個(gè)Page,然后把后臺(tái)代碼刪除:

使用ResourceDictionary來(lái)分別加載多個(gè)組件。

2.6、同樣添加一個(gè)ButtonX.xaml,在其中寫(xiě)入如下代碼:

xmlns:winrt="clr-namespace:Brooks.CustomerControl.WinRT" 為添加的前綴引用。

2.7、此時(shí)如果直接編譯,會(huì)提示錯(cuò)誤:

Google了半天,沒(méi)找到解決方案,干脆把缺失的文件復(fù)制到相應(yīng)位置,沒(méi)想到就好了。

這樣,最簡(jiǎn)單的一個(gè)ButtonX組件就完成了,下面新建一個(gè)項(xiàng)目來(lái)測(cè)試一下。

2.8、創(chuàng)建一個(gè)Windows Metro Style的Application項(xiàng)目:

添加項(xiàng)目引用:

2.9、添加一個(gè)Test.xaml空白Page,一開(kāi)始我這樣引用組件:

xmlns:winrt="Brooks.CustomerControl.WinRT;assembly=Brooks.CustomerControl.WinRT"

運(yùn)行時(shí)總是出錯(cuò),ButtonX是未知類(lèi)型。

后來(lái)我使用IDE來(lái)自動(dòng)添加引用,原來(lái)是使用using,且不需要添加assembly了。

xmlns:winrt="using:Brooks.CustomerControl.WinRT"

這樣就可以了:

2.10、在其單擊事件中寫(xiě)入如下代碼,單擊一次ButtonX就把按鈕寬度增加5:

2.11、運(yùn)行后就可以看到效果了:

此時(shí)如果使用本地賬戶登錄的Windows 8或者顯示分辨率低于1024 X 768,就很可能出現(xiàn)類(lèi)似這個(gè)錯(cuò)誤:

看上去是權(quán)限問(wèn)題,這個(gè)網(wǎng)上很多人都遇到了。

成功運(yùn)行后效果如下:

在Metro的導(dǎo)航中也可以看到這個(gè)程序:

2.12、關(guān)于.winmd

Windows 8種針對(duì)WinRT應(yīng)用引入了一種新的組件winmd,文件擴(kuò)展名為.winmd。本質(zhì)上就是一個(gè)dll,即PE格式。

Windows 8的winmd組件默認(rèn)位于:C:/Program Files (x86)/Windows Kits/8.0/Windows Metadata

用16進(jìn)制編輯器可以打開(kāi)查看:

也可以直接反編譯:

我的自定義組件的項(xiàng)目類(lèi)型依然是Class Library,若改成WinMD會(huì)遇到錯(cuò)誤:

若有朋友解決了這個(gè)問(wèn)題,請(qǐng)告知。 

小結(jié):

Windows 8的發(fā)布將會(huì)將觸角拓展到平板、手持設(shè)備的領(lǐng)域,WinRT作為一種基礎(chǔ)的解決方案,值得關(guān)注。

由于目前Windows 8還處于非常早期的階段,所以開(kāi)發(fā)環(huán)境等還不是很完善,相信隨著正式版的臨近,上面那些問(wèn)題也會(huì)一一解決。

再談WinRT自定義組件的開(kāi)發(fā)

Windows 8 消費(fèi)者預(yù)覽版終于發(fā)布了,我也于第一時(shí)間下載并進(jìn)行了安裝,看了看WinRT組件開(kāi)發(fā)的部分,事情變得明朗起來(lái)。

New Item的模板多了很多:

開(kāi)發(fā)自定義組件必須的項(xiàng)目類(lèi)型終于被添加進(jìn)來(lái),現(xiàn)在開(kāi)發(fā)一個(gè)自定義組件就容易多了。

這次依舊來(lái)開(kāi)發(fā)上次一樣的ButtonX,重寫(xiě)的方法與以前WPF、Silverlight一樣了:

開(kāi)發(fā)預(yù)覽版中的OnApplyTemplateCore方法被廢除了。

現(xiàn)在自定義組件的模板要被迫寫(xiě)在Generic.xaml一個(gè)文件里了,無(wú)法拆分為多個(gè)xaml,不知道為何。

成功運(yùn)行后自定義模板生效了:

NET技術(shù)開(kāi)發(fā)WinRT自定義組件,轉(zhuǎn)載需保留來(lái)源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 日本免费一区二区三区视频 | 欧美一区二区三区视视频 | 综合第一页 | 国产精品久久久久影视不卡 | 夜夜操伊人 | 欧美怡红院免费全视频 | 最新香蕉97超级碰碰碰碰碰久 | 夜色55夜色66亚洲精品网站 | 精新精新国产自在现 | 久久亚洲伊人中字综合精品 | 蜜月aⅴ免费一区二区三区 免播放器在线观看 | 97青青草视频 | 黄视频在线观看免费视频 | 色婷婷中文字幕在线一区天堂 | 巨大巨粗巨长 黑人长吊视频 | 国产福利免费观看 | 国产精品亚洲片夜色在线 | 91国偷自产一区二区三区 | 福利在线看 | 四虎在线永久免费视频网站 | 五月天激情播播 | 天天爱天天爽 | 国产愉拍精品视频手机 | 欧美一级做一级做片性十三 | 亚洲精品免费网站 | r18在线观看| 婷婷深爱网 | 日韩一区二区在线免费观看 | 国产一区二区网站 | 91精品免费观看老司机 | 国语精品视频在线观看不卡 | 依人在线免费视频 | 91福利在线观看 | 亚洲毛片大全 | 亚洲首页 | 国产一区二区三区免费播放 | 亚洲二区在线播放 | 人人添人人澡人人澡人人人人 | 看全色黄大色黄大片免责看 | 国产亚洲欧美在在线人成 | 四虎精品免费永久在线 |