这让我疯了.我在这里看微软的功能示例.我看不出我做错了什么.
所以,我正在尝试使用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)
那么,它有一个回报,它是一个未完成的表达方式?
你应该返回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
Run Code Online (Sandbox Code Playgroud)