如何在不使用XAML的情況下使用F#和WPF創建Hello World應用程序?如何使用F#和WPF創建不使用XAML的Hello World應用程序?
具體來說,有什麼步驟來完成這個?
例如,我需要什麼文件啓動應用程序?
[更新]
我嘗試了一些建議,並收到以下錯誤:
我證實,該項目設置爲啓動項目。 我不知道我還需要做什麼。
如何在不使用XAML的情況下使用F#和WPF創建Hello World應用程序?如何使用F#和WPF創建不使用XAML的Hello World應用程序?
具體來說,有什麼步驟來完成這個?
例如,我需要什麼文件啓動應用程序?
[更新]
我嘗試了一些建議,並收到以下錯誤:
我證實,該項目設置爲啓動項目。 我不知道我還需要做什麼。
第一個要理解的是這個:XAML只是一個(據說更簡潔)的方式來表示一個對象圖。 (順便說一下,XAML不需要指定WPF UI,它可以用於其他事情...理論上)
XAML標記對應於實例化.NET類,屬性和嵌套標記對應於(大致)對象屬性。除此之外沒有什麼魔法。所有的XAML都會創建一堆對象並將它們連接在一起。
例如,這樣的:
<Button x:Name="myButton">Click!</Button>
將粗略地對應於這樣的:
let myButton = Button(Content = "Click!")
(它得到具有附加屬性,綁定類型轉換器等稍微複雜,但我不會在這裏進入所有)
第二個要知道的關鍵是如何編碼入口點。爲此,有三個簡單的步驟:
Application
Application.MainWindow
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()
不,你沒有.. –
oops。好的。它被保存了。 –
你得開玩笑吧 –
若要建立在原始答案上:
我必須將項目的輸出庫設置爲Windows。
然後我不得不添加STAThread屬性。
下面的代碼:
module Temp
open System.Windows
open System.Windows.Controls
open System
[<STAThread>] do()
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 |> ignore
layout.Children.Add button |> ignore
let window =
Window(
Content = layout,
Visibility = Visibility.Visible)
let app = Application(MainWindow = window)
app.Run() |> ignore
提示 - 'Library1.fs' - 爲什麼VS給出文件這個名字呢? –
謝謝。我發佈了完整的答案。 –