天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

開發WinRT自定義組件

最近在工作中開始開發組件,滿足公司的業務與技術需求,同時也在規劃組件的開發路線,為公司的下一代產品做好技術儲備。

元旦假期看了看Windows 8中的組件開發,除了傳統的WPF、Windows Form、Silverlight、ASP.NET組件之外,還新增了一種WinRT組件。

WinRT = Windows Runtime,是Windows 8 新引入的一個新的框架,意在為Windows 平臺上的開發提供一種語言無關、高度智能化的平臺。

不是為了取代.NET、Win32等,而是為不同語言編寫的程序提供統一支持,尤其是Metro風格程序。

測試代碼下載

一、準備工作

安裝Windows 8 Developer Preview、VS 11 Developer Preview等開發工具。

安裝Win8時注意要用Windows Live ID登錄,若沒有賬戶可以先注冊一個,否則后面會無法運行Metro程序。

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

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

此外,SQL Server 2012 RC0也已經發布,建議安裝。

二、開始開發

2.1、創建一個Windows Metro Style的Class Library項目:

2.2、添加一個類:

2.3、寫一個ButtonX,繼承自Button:

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

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

2.5、新建一個Themes文件夾,在其中添加Generic.xaml文件,因為沒有資源字典這種項類型,故需要添加一個Page,然后把后臺代碼刪除:

使用ResourceDictionary來分別加載多個組件。

2.6、同樣添加一個ButtonX.xaml,在其中寫入如下代碼:

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

2.7、此時如果直接編譯,會提示錯誤:

Google了半天,沒找到解決方案,干脆把缺失的文件復制到相應位置,沒想到就好了。

這樣,最簡單的一個ButtonX組件就完成了,下面新建一個項目來測試一下。

2.8、創建一個Windows Metro Style的Application項目:

添加項目引用:

2.9、添加一個Test.xaml空白Page,一開始我這樣引用組件:

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

運行時總是出錯,ButtonX是未知類型。

后來我使用IDE來自動添加引用,原來是使用using,且不需要添加assembly了。

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

這樣就可以了:

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

2.11、運行后就可以看到效果了:

此時如果使用本地賬戶登錄的Windows 8或者顯示分辨率低于1024 X 768,就很可能出現類似這個錯誤:

看上去是權限問題,這個網上很多人都遇到了。

成功運行后效果如下:

在Metro的導航中也可以看到這個程序:

2.12、關于.winmd

Windows 8種針對WinRT應用引入了一種新的組件winmd,文件擴展名為.winmd。本質上就是一個dll,即PE格式。

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

用16進制編輯器可以打開查看:

也可以直接反編譯:

我的自定義組件的項目類型依然是Class Library,若改成WinMD會遇到錯誤:

若有朋友解決了這個問題,請告知。 

小結:

Windows 8的發布將會將觸角拓展到平板、手持設備的領域,WinRT作為一種基礎的解決方案,值得關注。

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

再談WinRT自定義組件的開發

Windows 8 消費者預覽版終于發布了,我也于第一時間下載并進行了安裝,看了看WinRT組件開發的部分,事情變得明朗起來。

New Item的模板多了很多:

開發自定義組件必須的項目類型終于被添加進來,現在開發一個自定義組件就容易多了。

這次依舊來開發上次一樣的ButtonX,重寫的方法與以前WPF、Silverlight一樣了:

開發預覽版中的OnApplyTemplateCore方法被廢除了。

現在自定義組件的模板要被迫寫在Generic.xaml一個文件里了,無法拆分為多個xaml,不知道為何。

成功運行后自定義模板生效了:

NET技術開發WinRT自定義組件,轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

主站蜘蛛池模板: 97免费人妻在线观看 | 久久精品一本到东京热 | 九色PORNY真实丨首页 | 天天狠狠色综合图片区 | 99久久麻豆AV色婷婷综合 | 欧美亚洲天堂网 | 亲爱的妈妈6韩国电影免费观看 | 香蕉精品国产自在现线拍 | 国产精品久久高潮呻吟无码 | 美美哒免费影视8 | proburn中文破解版下载 | 欧美丰满熟妇BBB久久久 | 视频成人永久免费下载 | 99精品国产免费久久久久久下载 | 免费人成在线观看视频不卡 | 老师在讲桌下边h边讲课 | 忘忧草秋观看未满十八 | 花蝴蝶高清在线视频免费观看 | 亚州日韩精品AV片无码中文 | 国产在线一区二区三区四区 | 久拍国产在线观看 | 桃花色影院 | 囚禁固定在调教椅上扩张H 秋霞最新高清无码鲁丝片 秋霞在线看片无码免费 | 亚洲午夜精品一区二区公牛电影院 | 在线播放日韩欧美亚洲日本 | 我们中文在线观看免费完整版 | 国产人妖一区二区 | 国产高清美女一级毛片久久 | 99久久免费精品国产免费 | 亚洲人成网站在线观看90影院 | 国产人妻麻豆蜜桃色在线 | 97在线超碰免费视频 | 国产精品九九九久久九九 | 毛片在线播放网址 | 天美传媒在线观看完整高清 | 色噜噜狠狠色综合中文字幕 | 高h乱np甄宓 | 日本高清无人区影院 | 日本超A大片在线观看 | 在线观看免费视频a | 国产成人小视频在线观看 |