F#WPF事件:"阻止这个'让'未完成.期待一个表达"

Ale*_*ett 2 wpf f# f#-3.0

这让我疯了.我在这里看微软的功能示例.我看不出我做错了什么.

所以,我正在尝试使用F#和WPF,我找到了一个有效的在线项目模板. 在这里.我即将开始.遗憾的是,设计人员无法通过双击C#中的元素来生成F#代码中的事件.但是哦,我可以设置Click的功能.我决定手动完成所有操作.

这是我有缺陷的尝试:

module MainApp

open System
open System.Windows
open System.Windows.Controls
open FSharpx

let mutable doc = ""

type MainWindow = XAML<"MainWindow.xaml">

let loadWindow() =
   let window = MainWindow()

   // Your awesome code code here and you have strongly typed access to the XAML via "window"

   window.Root

   let make (sender:Object, e:RoutedEventArgs) =
    doc<- doc +"<?xml version=\"1.0\" standalone=\"no\"?>"
    0


[<STAThread>]
(new Application()).Run(loadWindow()) |> ignore
Run Code Online (Sandbox Code Playgroud)

无论如何,它不喜欢让它上线的线.它给了我这个错误:

Block following this 'let' is unfinished. Expect an expression
Run Code Online (Sandbox Code Playgroud)

然而,显然我在MSDN上阅读

  The compiler uses the final expression in a function body to determine the return value and type
Run Code Online (Sandbox Code Playgroud)

那么,它有一个回报,它是一个未完成的表达方式?

lat*_*kin 5

你应该返回window.RootloadWindow.现在,最后loadWindow一段代码是make函数的声明,它是无效的.请记住,缩进确定F#中的范围.

如果你想添加一个新函数make,但是loadWindow基本上是空的,你需要正确对齐缩进:

let loadWindow() =
   let window = MainWindow()

   // Your awesome code code here and you have strongly typed access to the XAML via "window"

   window.Root

let make (sender:Object, e:RoutedEventArgs) =
    doc<- doc +"<?xml version=\"1.0\" standalone=\"no\"?>"
    0
Run Code Online (Sandbox Code Playgroud)