这让我疯了。我在微软的功能示例中寻找here。 我看不出我做错了什么。
所以,我正在尝试使用F#和WPF,我找到了一个有效的在线项目模板。 Here it is。我即将开始。遗憾的是,设计人员无法通过双击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
无论如何,它不喜欢让make上线。它给了我这个错误:
Block following this 'let' is unfinished. Expect an expression
然而,显然我在MSDN上阅读
The compiler uses the final expression in a function body to determine the return value and type
所以,它有一个回归,它是一个未完成的表达式?
答案 0 :(得分:5)
您应该从window.Root
返回loadWindow
。现在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