我是 Elmish.WPF 和 F# 的新手。在研究 NewWindow/NewWindow.Views 的教程时,作者从 C# 分配了以下代码:
using System;
using Elmish.WPF.Samples.NewWindow;
using static Elmish.WPF.Samples.NewWindow.Program;
namespace NewWindow.Views {
public static class Program {
[STAThread]
public static void Main() =>
main(new MainWindow(), () => new Window1(), () => new Window2());
}
}
即调用 F# NewWindow.Views 项目中的 main 方法:
let main mainWindow (createWindow1: Func<#Window>) (createWindow2: Func<#Window>) =
let createWindow1 () = createWindow1.Invoke()
let createWindow2 () =
let window = createWindow2.Invoke()
window.Owner <- mainWindow
window
let bindings = App.mainBindings createWindow1 createWindow2
Program.mkSimpleWpf App.init App.update bindings
|> Program.withConsoleTrace
|> Program.runWindowWithConfig
{ ElmConfig.Default with LogConsole = true; Measure = true }
mainWindow
如何更改 F# 模块主例程以便直接将其用作入口点并避免它成为函数?也就是说,我希望 F# 模块能够通过 Elmish 直接控制窗口。类似于以下内容,但调用了自包含的从属窗口:
/// This is the application's entry point. It hands things off to Elmish.WPF
[<EntryPoint; STAThread>]
let main _ =
Program.mkSimpleWpf init update bindings
|> Program.runWindow (MainWindow())
简而言之,我希望 C# 视图不了解 F# 项目。
这可以用 Elmish.wpf 完成吗?
任何帮助(尤其是示例代码:))都会很有帮助。