在应用程序后面创建一个新的 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#类型中出现的相应成员。我推荐这个。