1

冒着打死马的风险,我想弄清楚使用 Elmish.WPF 的初始设置。

我的意图是基本上有两个项目:

  1. FrontOfficeV - 一个 C# 项目,用于保存 XAML、Windows 等。
  2. 模型——用于 Elmish.WFP、F# 代码等的 F# 项目。

在尝试了大多数项目类型选项 (Visual Studio 2019) 之后,我选择了: C# 项目的控制台应用程序 (.NET Framework) C#。

这创建了默认为:目标框架:.NET Framework 4.7.2 输出类型:控制台应用程序的 C# 项目。这也创建了一个“program.cs”文件。

接下来,在 C# 控制台应用程序中使用 ADD -->New Item没有显示“窗口”选项。它确实显示了“用户控制(WPF)”选项。所以“用户控件(WPF)被添加并重命名为“MainWindow”。然后我将xaml中的元素标记从UserControl更改为Window,并将后面的代码更改为从Window而不是UserControl继承。最后,我更改了项目属性将输出类型编译为:Windows Application。这个 C# 项目现在被标记为 Visual Studio 的“启动”项目。

接下来,使用以下文件创建 F# Models 项目:Library (.NET Framework) F# Windows library。这创建了一个默认为:目标框架:.NET Framework 4.7.2 输出类型:类库的项目。在 F# 类库中,添加了一个程序——FrontOffice.fs:

/// This is the application's entry point. It hands things off to Elmish.WPF     
    let entryPoint (mainWindow: Window) =    
        Program.mkSimpleWpf init update bindings
        |> Program.runWindowWithConfig
                   { ElmConfig.Default with LogTrace = true; Measure = true; MeasureLimitMs = 1 }
                   mainWindow

最后,将 program.cs 更改为:

public class Program
    {
        [STAThread]
        public static void Main(string[] args)
        {
            Application app = new Application();
            Window mainWindow = new MainWindow();
            Models.FrontOffice.entryPoint(mainWindow);
        }
    }

这里的重点是使用:Program.mkSimpleWpf。

为什么这么麻烦?我想使用完整的 WPF/C#/XAML 好东西(如主题、自定义控件等),但我不太确定在 F# 中直接编译 XAML 是否可以做到这一点。我希望能够在 XAML 中使用 F# 数据类型,因此 C# 项目需要对 F# 模块的引用,因此在 C# 中创建窗口并将引用传递给 F# 模块入口点似乎更容易,如以上。

问题:

  1. 上面的设置对于 Elmish.WPF 是否正确?
  2. 是否有更好的设置来实现我的目标?
  3. 从 Visual Studio 2019 开始,xaml 的 F# 编译是否适用于主题、自定义控件等?我可以期待什么打嗝?

感谢您对这些问题的任何澄清。TIA

4

0 回答 0