如何在没有XAML的情况下使用F#和WPF创建Hello World应用程序?

Sco*_*rod 0 wpf f#

如何在没有XAML的情况下使用F#和WPF创建Hello World应用程序?

具体来说,实现这一目标的步骤是什么?

例如,启动应用程序需要哪些文件?

[UPDATE]

我尝试了一些建议并收到以下错误:

在此输入图像描述

我确认该项目已设置为启动项目.我不确定我还需要做什么.

Fyo*_*kin 10

首先要理解的是:XAML只是一种(据说更简洁)表示对象图的方式.(顺便说一句,XAML不需要指定WPF UI,它可以用于其他事情......理论上)

XAML标记对应于实例化.NET类,属性和嵌套标记(大致)对应于对象属性.除此之外没有魔法.所有XAML都只是创建了一堆对象并将它们连接在一起.

例如,这个:

<Button x:Name="myButton">Click!</Button>
Run Code Online (Sandbox Code Playgroud)

大致相当于这个:

let myButton = Button( Content = "Click!" )
Run Code Online (Sandbox Code Playgroud)

(附加的属性,绑定,类型转换器等确实有点复杂,但我不会在这里讨论所有这些)


第二个要知道的关键是如何编码入口点.为此,有三个简单的步骤:

  1. 创建 Application
  2. 创建 Application.MainWindow
  3. 呼叫 Application.Run

这是一个最小的全功能应用程序(以F#脚本的形式):

#r "WindowsBase"
#r "PresentationCore"
#r "PresentationFramework"

open System.Windows
open System.Windows.Controls

let button = Button(Content="Click me!")
let label = Label(Content="Hello")
button.Click.Add (fun _ -> label.Content <- "World")

let layout = StackPanel()
layout.Children.Add label
layout.Children.Add button

let window = 
  Window(
    Content = layout,
    Visibility = Visibility.Visible)

let app = Application(MainWindow = window)
app.Run()
Run Code Online (Sandbox Code Playgroud)