WPF + Swift =♥

我的朋友们非常清楚,我认为WPF是有史以来最伟大的技术之一。 也被称为Windows Presentation Foundation,是Microsoft在.NET Framework 3.0年前引入的,但是它本身是一个完整的框架,从第一天起我就喜欢它(尽管我确实需要购买和阅读本书来帮助自己。学习得更快):在我看来,其绑定,依赖项属性,路由事件,资源,模板,触发器,样式和主题(仅举几个出色的功能)都是用户界面开发领域的绝对赢家。

根据定义,太糟糕的WPF仅限于Windows; 我只能梦想有一天macOS Presentation Foundation的表亲代替Apple的Cocoa,是的,这永远不会发生:Cocoa也足够好,经过几个月的尝试,人们真的可以学会喜欢它。 ㋡

但是,有些人可能还知道,在macOS和iOS开发超过一年之后(但是我对它的功能一目了然,这对我来说很明显),我也将Swift视为目前最好的编程语言-并且是的,这比我以前心爱的C#更好。 尽管缺少事件async-await关键字,但它们都是.NET的一等公民,并且无论何时将胖闭包传递给基础对象时,都必须捕获[弱自我]引用,以避免ARC环境中的内存泄漏。

但是帖子的标题又是什么呢? 我们真的可以(真的吗?)使用Swift编程语言进行WPF开发吗?

看来是这样,而且-幸运的是-是免费的! 我们需要的只是RemObjects中的一些“元素”(无论“ Rem”是什么意思,我只是希望不要像BASIC中那样“删除行”): Water (或Visual Studio!)和Silver(一种能够实现以下功能的Swift编译器实现)生成MSIL!

(“雷姆”人可能还会喜欢许多其他与多平台[attn:not cross-platform!]开发相关的产品,但是显然免费提供了Silver来增加他们的用户群,所以我们可以享受它而无需任何麻烦,甚至需要的话也可以在商业上使用!)

例如,安装了这些Elements之后,让我们使用Swift开发一个小型WPF应用程序,以了解其工作原理。 我们现在不打算花大钱,所以一个简单的“ swifty”简化的Hello World就可以了。

但是,让我们先澄清一下:我们仍将基于CLR,而不是Apple的Foundation。 例如,如果我们仅在项目中保留[开源] Swift.dll引用(也需要Echoes.dll),我们仍然可以使用一些“ Swiftish”类型,例如简单的Int。 (或者我们可以完全删除这些引用,而改用像Int = Int32这样的类型别名,但是我们仍然会错过其他东西,例如mapfilterreduce funcs,这在Swift中是很常见的,所以我想说吧伙计们再次免费提供了…)

但是,足够多的谈话。 要创建后面带有Swift代码的WPF应用项目,我们只需在Visual Studio中选择[新安装的] Silver模板即可:

当然,它为我们提供了Window1.xaml

但也有一个Window1.xaml.swift源代码文件:

当然,我们可以以“正常”方式在用户界面中添加一个简单的Label

但是我们现在可以在Swift后面填充它:

这还不是全部! 尽管我上面只关注WPF,但您(正确)推断出Silver可以开发其他类型的.NET程序集,从类库到旧的Windows Forms,并可以在和微软的世界! (我猜想,使用适当的包装,即使在Azure开发中也是如此。)

Interesting Posts