使用Prism开发Windows 8 Metro应用(Developing Windows 8 Metro Applications with Embarcadero Prism)

Metro是微软为了适应移动设备,全新开发的平台,将会部署到Windows 8和Windows Phone 8。耐人寻味的是Metro平台并不是基于.Net的,而是基于Windows原生API的。想当初.NET的目的就是解决跨系统的兼容问题,使向下兼容不再成为Windows发展的障碍。可谁知时代在变,iOS的出现使得苹果风光无限。微软向来作为操作系统市场的老大,自然不会放弃移动设备这个市场。只是原来一直想把Windows生硬地搬到移动设备上,结果费力不讨好。现在iOS的创新指明了移动设备OS的方向,相信微软定会迎头赶上,因为微软的发展史上有太多类似的案例,已经成为微软文化和性格的一部分。


Prism是独立公司RemObjects Software的公司的产品,由于它使用Objected Pascal,所以一度被命名为Delphi Prism--因为Delphi是唯一使用Object Pascal的IDE了。实际上,应该叫Prism for Delphi更合适,因为Prism算是一种改进型的Pascal,和Delphi的Pascal差不多平级,只不过它没有自己的IDE,所以才搭载Delphi和Visual Studio,以类似插件的形式运行。


开发.NET和Metro程序,Visual Studio自然是最好的选择。对我们这些用惯了Pascal的老程序员,Prism也提供了一种可能性。只是你得安装先Visual Studio,然后才能安装Prism。前面已经说过,Prism用的是别人的壳,以类似插件的方式在运行。


虽然Metro是全新的平台,可是编程看起来却很熟悉,界面使用的XAML,一种类似XML的Tag语言,程序可以用C#,Pacal等等,和ASP.NET是非常的相似。想想也对,ASP.NET很成功,当然直接借来用,为什么要重新再造轮子呢?但是,由于Metro是针对移动设备的,输入的方式是触摸,所以很多的UI设计都很原来的Windows Desktop App不同,看几个截图吧:







Windows 8还没有正式发布,但如果Miscrosoft Store能和Apple App Store一样成功,对很多程序员来说,是个很好的发小财的机会。相信微软会和很多移动设备制造商合作,推出大量搭载Metro的设备。只是不知道MS Store是否需要和Apple一样,对应用程序进行审查。但总的来所,微软应该更开放。我个人觉得Metro应该会有所作为,毕竟,对消费市场,触摸屏是简化了应用,可是对于商业应用,能从触摸屏切换回经典的鼠标键盘操作,应该也是非常必要的。未来究竟会怎样,让我们拭目以待!

代码介绍 MetroForWinForm(win8风格模版) using System; using System.Drawing; using System.Globalization; using System.Windows.Forms; using MetroFramework.Forms; namespace MetroFramework.Demo { public partial class MainForm : MetroForm { public MainForm() { InitializeComponent(); metroStyleManager.Theme = MetroThemeStyle.Default; metroStyleManager.Style = MetroColorStyle.Teal; } private void metroTileSwitch_Click(object sender, EventArgs e) { var m = new Random(); int next = m.Next(0, 13); metroStyleManager.Style = (MetroColorStyle)next; } private void metroTile1_Click(object sender, EventArgs e) { metroStyleManager.Theme = metroStyleManager.Theme == MetroThemeStyle.Light ? MetroThemeStyle.Dark : MetroThemeStyle.Light; } private void metroButton1_Click(object sender, EventArgs e) { MetroTaskWindow.ShowTaskWindow(this, "SubControl in TaskWindow", new TaskWindowControl(), 10); } private void metroButton2_Click(object sender, EventArgs e) { MetroMessageBox.Show(this, "Do you like this metro message box?", "Metro Title", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Asterisk); } private void metroButton5_Click(object sender, EventArgs e) { metroContextMenu1.Show(metroButton5, new Point(0, metroButton5.Height)); } private void metroButton6_Click(object sender, EventArgs e) { MetroMessageBox.Show(this, "This is a sample MetroMessagebox `OK` only button", "MetroMessagebox", MessageBoxButtons.OK, MessageBoxIcon.Information); } private void metroButton10_Click(object sender, EventArgs e) { MetroMessageBox.Show(this, "This is a sample MetroMessagebox `OK` and `Cancel` button", "MetroMessagebox", MessageBoxButtons.OKCancel, MessageBoxIcon.Information); } private void metroButton7_Click(object sender, EventArgs e) { MetroMessageBox.Show(this, "This is a sample MetroMessagebox `Yes` and `No` button", "MetroMessagebox", MessageBoxButtons.YesNo, MessageBoxIcon.Question); } private void metroButton8_Click(object sender, EventArgs e) { MetroMessageBox.Show(this, "This is a sample MetroMessagebox `Yes`, `No` and `Cancel` button", "MetroMessagebox", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question); } private void metroButton11_Click(object sender, EventArgs e) { MetroMessageBox.Show(this, "This is a sample MetroMessagebox `Retry` and `Cancel` button. With warning style.", "MetroMessagebox", MessageBoxButtons.RetryCancel, MessageBoxIcon.Warning); } private void metroButton9_Click(object sender, EventArgs e) { MetroMessageBox.Show(this, "This is a sample MetroMessagebox `Abort`, `Retry` and `Ignore` button. With Error style.", "MetroMessagebox", MessageBoxButtons.AbortRetryIgnore, MessageBoxIcon.Error); } private void metroButton12_Click(object sender, EventArgs e) { MetroMessageBox.Show(this, "This is a sample `default` MetroMessagebox ", "MetroMessagebox"); } private void metroButton4_Click(object sender, EventArgs e) { var testform = new TestForm1(); testform.ShowDialog(); } private void metroButton4_Click_1(object sender, EventArgs e) { metroTextBox2.Focus(); } } }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值