在應用程式後面建立一個新的 F WPF 程式碼
建立一個 F#控制檯應用程式。
將應用程式的輸出型別更改為 Windows 應用程式。
新增 FsXaml NuGet 包。
按此處列出的順序新增這四個原始檔。
MainWindow.xaml
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="First Demo" Height="200" Width="300">
<Canvas>
<Button Name="btnTest" Content="Test" Canvas.Left="10" Canvas.Top="10" Height="28" Width="72"/>
</Canvas>
</Window>
MainWindow.xaml.fs
namespace FirstDemo
type MainWindowXaml = FsXaml.XAML<"MainWindow.xaml">
type MainWindow() as this =
inherit MainWindowXaml()
let whenLoaded _ =
()
let whenClosing _ =
()
let whenClosed _ =
()
let btnTestClick _ =
this.Title <- "Yup, it works!"
do
this.Loaded.Add whenLoaded
this.Closing.Add whenClosing
this.Closed.Add whenClosed
this.btnTest.Click.Add btnTestClick
App.xaml 中
<Application xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Application.Resources>
</Application.Resources>
</Application>
App.xaml.fs
namespace FirstDemo
open System
type App = FsXaml.XAML<"App.xaml">
module Main =
[<STAThread; EntryPoint>]
let main _ =
let app = App()
let mainWindow = new MainWindow()
app.Run(mainWindow) // Returns application's exit code.
從專案中刪除 Program.fs 檔案。
更改生成操作,以資源為兩個 XAML 檔案。
新增對 .NET 程式集 UIAutomationTypes 的引用。
編譯並執行。
你無法使用設計器新增事件處理程式,但這根本不是問題。只需在後面的程式碼中手動新增它們,就像在本例中看到的三個處理程式一樣,包括測試按鈕的處理程式。
更新:FsXaml 中新增了另一種可能更加優雅的新增事件處理程式的方法。你可以在 XAML 中新增事件處理程式,與 C#中相同,但你必須手動執行,然後覆蓋在 F#型別中出現的相應成員。我推薦這個。