开发WinRT自定义组件+++.docx

上传人:b****1 文档编号:10889357 上传时间:2023-05-28 格式:DOCX 页数:15 大小:1.55MB
下载 相关 举报
开发WinRT自定义组件+++.docx_第1页
第1页 / 共15页
开发WinRT自定义组件+++.docx_第2页
第2页 / 共15页
开发WinRT自定义组件+++.docx_第3页
第3页 / 共15页
开发WinRT自定义组件+++.docx_第4页
第4页 / 共15页
开发WinRT自定义组件+++.docx_第5页
第5页 / 共15页
开发WinRT自定义组件+++.docx_第6页
第6页 / 共15页
开发WinRT自定义组件+++.docx_第7页
第7页 / 共15页
开发WinRT自定义组件+++.docx_第8页
第8页 / 共15页
开发WinRT自定义组件+++.docx_第9页
第9页 / 共15页
开发WinRT自定义组件+++.docx_第10页
第10页 / 共15页
开发WinRT自定义组件+++.docx_第11页
第11页 / 共15页
开发WinRT自定义组件+++.docx_第12页
第12页 / 共15页
开发WinRT自定义组件+++.docx_第13页
第13页 / 共15页
开发WinRT自定义组件+++.docx_第14页
第14页 / 共15页
开发WinRT自定义组件+++.docx_第15页
第15页 / 共15页
亲,该文档总共15页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

开发WinRT自定义组件+++.docx

《开发WinRT自定义组件+++.docx》由会员分享,可在线阅读,更多相关《开发WinRT自定义组件+++.docx(15页珍藏版)》请在冰点文库上搜索。

开发WinRT自定义组件+++.docx

开发WinRT自定义组件+++

开发WinRT自定义组件

最近在工作中开始开发组件,满足公司的业务与技术需求,同时也在规划组件的开发路线,为公司的下一代产品做好技术储备。

元旦假期看了看Windows8中的组件开发,除了传统的WPF、WindowsForm、Silverlight、ASP.NET组件之外,还新增了一种WinRT组件。

WinRT=WindowsRuntime,是Windows8新引入的一个新的框架,意在为Windows平台上的开发提供一种语言无关、高度智能化的平台。

不是为了取代.NET、Win32等,而是为不同语言编写的程序提供统一支持,尤其是Metro风格程序。

测试代码下载

一、准备工作

安装Windows8DeveloperPreview、VS11DeveloperPreview等开发工具。

安装Win8时注意要用WindowsLiveID登录,若没有账户可以先注册一个,否则后面会无法运行Metro程序。

安装Win8后注意更新一下显卡驱动,AMD官方提供了Windows8的驱动,Nvidia使用Win7的驱动即可,确保分辨率在1024X768或更高。

VS11建议卸载自带的Express版本,安装全功能的DeveloperPreview版本。

此外,SQLServer2012RC0也已经发布,建议安装。

二、开始开发

2.1、创建一个WindowsMetroStyle的ClassLibrary项目:

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、创建一个WindowsMetroStyle的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、运行后就可以看到效果了:

此时如果使用本地账户登录的Windows8或者显示分辨率低于1024X768,就很可能出现类似这个错误:

看上去是权限问题,这个网上很多人都遇到了。

成功运行后效果如下:

在Metro的导航中也可以看到这个程序:

2.12、关于.winmd

Windows8种针对WinRT应用引入了一种新的组件winmd,文件扩展名为.winmd。

本质上就是一个dll,即PE格式。

Windows8的winmd组件默认位于:

C:

\ProgramFiles(x86)\WindowsKits\8.0\WindowsMetadata

用16进制编辑器可以打开查看:

也可以直接反编译:

我的自定义组件的项目类型依然是ClassLibrary,若改成WinMD会遇到错误:

若有朋友解决了这个问题,请告知。

 

小结:

Windows8的发布将会将触角拓展到平板、手持设备的领域,WinRT作为一种基础的解决方案,值得关注。

由于目前Windows8还处于非常早期的阶段,所以开发环境等还不是很完善,相信随着正式版的临近,上面那些问题也会一一解决。

再谈WinRT自定义组件的开发

Windows8消费者预览版终于发布了,我也于第一时间下载并进行了安装,看了看WinRT组件开发的部分,事情变得明朗起来。

NewItem的模板多了很多:

开发自定义组件必须的项目类型终于被添加进来,现在开发一个自定义组件就容易多了。

这次依旧来开发上次一样的ButtonX,重写的方法与以前WPF、Silverlight一样了:

开发预览版中的OnApplyTemplateCore方法被废除了。

现在自定义组件的模板要被迫写在Generic.xaml一个文件里了,无法拆分为多个xaml,不知道为何。

成功运行后自定义模板生效了:

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2