繁体   English   中英

F#:没有UI(比如WPF)吗?

[英]F#: is there no UI (like WPF) for it?

我最近在F#上看过一些视频。 它似乎主要用于服务或类? 我在VS2010 Beta中看不到“F#WPF”应用程序?

F#实际上有一些非常好的构造用于创建事件驱动的UI应用程序,例如First Class EventsObject Expressions ,从构造函数调用属性setter,例如:

new Form(Text="My Window Title", Width=600, Height=400)

还有很多。

但是,在VS中创建表单设计器会为您的语言重新设置CodeDom。 只要您的语言看起来与C#或VB 完全相同 ,当前CodeDom架构的效果很好; 它不适合生成F#代码(这来自我现在无法找到的网络广播或采访)。 它还需要部分类,如果我没记错的话,在Beta 1的语言中不支持。在第一版中,F#团队不是专注于设计师支持,而是决定将他们的资源用于增强语言的其他部分,例如异步和并行编程等

这意味着您在F#中创建UI至少有4种选择:

  • 手动编写所有UI代码,这对于简单的应用程序来说很好;
  • 创建您的F#代码作为库来处理“硬件”,如异步和并行代码,或以计算为中心的代码,并从C#/ VB调用它;
  • 将您的UI代码创建为C#/ VB库,并从F#驱动它并将事件处理委托给F#; 要么
  • 使用DSL计算表达式(monad)来简化手工构建UI(在此答案中寻找其他链接时发现了这一点)。

其中,从F#调用C#UI库可能是最灵活的,同时仍保留熟悉的范例。 但是,使用计算表达式手动快速构建UI当然值得一看。

你当然可以在F#中创建GUI - 毕竟它只是另一种.NET语言。

Tomas Petricek的书“真实世界的功能编程” (我已经帮助了一点)有各种GUI示例。 如果要查看示例,可以下载源代码

诚然GUI编程的某些方面不映射非常好,以功能性风格,有参与了很多突变,但有办法和周围这意味着:)

使用F#3.0和XAML类型提供程序 ,可以在Visual Studio 11中为F#创建WPF设计器。请参阅http://www.navision-blog.de/2012/03/22/wpf-designer-for-f/

我们出售一个名为F#for Visualization的商业图书馆,用100%F#代码编写,并使用WPF从F#代码中提供带排版数学的交互式图形:

替代文字
(来源: ffconsultancy.com

因此,使用WPF在F#中编写GUI应用程序当然是可能的。

它是一种.NET语言,因此它可以使用.NET类库。 这意味着Winforms,WPF或您可能在C#中使用的任何其他内容。

根据James Hugard的链接更新

目前,F#不会用于GUI,因为它不是最重要的用例。 来自Don Syme的博客

在第一个支持的版本中,我们的目标必须是关注F#的核心优势,以便使用F#Interactive进行探索性编程,使用数据编程并实现并行和异步组件。

虽然理论上可以使用F#和标准GUI库,但如果需要GUI,则应使用VB或C#:

F#用户应使用Visual Studio设计器工具生成C#或Visual Basic代码,并将这些组件合并到其F#应用程序中。

从长期来看,“生成F#代码的面向表示的设计器工具”,根据Syme,“绝对可行”。

当然,您也可以使用F#中的所有WPF类。 您可以使用F#创建Windows,控件和其他所有内容,有时我也可以在F#控制台中使用它。

它还没有像C#或VB那样紧密集成到Visual Studio中,但正如您在评论中看到的那样,未来的设计人员支持是可行的。 我想我们必须等到那时(或使用其他工具)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM