发文章
发文工具
撰写
网文摘手
文档
视频
思维导图
随笔
相册
原创同步助手
其他工具
图片转文字
文件清理
AI助手
留言交流
最近在工作中开始开发组件,满足公司的业务与技术需求,同时也在规划组件的开发路线,为公司的下一代产品做好技术储备。
元旦假期看了看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,不知道为何。
成功运行后自定义模板生效了:
来自: 昵称10504424 > 《C#》
0条评论
发表
请遵守用户 评论公约
移动报表开发技术交流会
移动报表开发技术交流会移动开发必将成为2013年的技术热门,而基于WinRT和HTML5的移动报表开发也炙手可热,如果你想了解相关的行业动态,想与专家面对面进行交流,移动报表开发技术交流会就是你的机会...
超图地理信息系统(SuperMap GIS Technologies, Inc.)
SuperMap IS .Web Controls——组件式的WebGIS开发理念 SuperMap IS .NET 5提供的Web Controls封装了大部分SuperMap IS .NET应用服务...
软件开发原子化 技术转型加速器
软件开发原子化 技术转型加速器。原子服务与微服务的概念类似,都是表达软件服务颗粒度以及如何实现该颗粒度服务的方式。就当下的中国TO...
什么是低代码、无代码开发
什么是低代码、无代码开发。3、低代码开发与无代码开发的区别。在低代码开发平台上开发应用程序需要技术人员才能够完成,这是因为低代码...
sharepoint教程SharePoint是由微软公司开发的一款协作平台软件,提供
sharepoint教程SharePoint是由微软公司开发的一款协作平台软件,提供sharepoint教程SharePoint是由微软公司开发的一款协作平台软件,提供。SharePoint是由微软公司开发的一款协作平台软件,提供了一系...
iST宜特独家研发出MEMS加速度计失效分析标准流程
iST宜特独家研发出MEMS加速度计失效分析标准流程。为降低企业投入MEMS开发时,因故有分析技术难以找出MEMS真正失效原因,iST集团-台湾宜特今(10月15日)宣布,成功建构出MEMS加速度计的标准失效分析流...
美好医疗拟首次公开发行不低于4427万股 核心业务产品为家用呼吸机和人工植入耳蜗组件
美好医疗拟首次公开发行不低于4427万股 核心业务产品为家用呼吸机和人工植入耳蜗组件智通财经2022-09-15 21:11.家用呼吸机和人工植入耳蜗组件的开发制造和销售是公司目前的核心业务;同时,公司也着力于...
第二个设想开发小行星资源的企业
第二个设想开发小行星资源的企业长期目标是开发就地制造能力,用建在精密的 三维打印机旁的 高科技迷你车间在太空里收获原材料、建造组件。太阳能驱动的 DSI FireFly宇宙飞船配有推动系 统、太阳面板以...
如何简单制作App,这个共享平台自己做,省90%费用
手机App的开发不像网页那么简单,通常费用都需要几十万,经过2个月以上的开发时间,手机App开发公司的实力也直接决定手机App开发的质量...
微信扫码,在手机上查看选中内容