3

我是 F# 的新手。我最近被介绍给 Elmish.wpf 和 MVU 设计。我正在使用的应用程序在 C# WPF 中,带有许多 WPF 用户控件、自定义控件和窗口。Elmish.wpf 似乎将视图模型的概念扁平化为单个数据上下文。(??)。Elmish.wpf 可以与多个窗口、用户控件和自定义控件一起使用吗?(这里的“多个”是指大约 20 个窗口、用户控件和自定义控件。)

如果是这样,有这样的例子吗?

在查看 Elmish.wpf 网页时,似乎所有窗口都需要在初始化时创建——

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

有一个更好的方法吗?我在吠叫错误的树吗?

提前致谢。

4

1 回答 1

4

是的,Elmish.WPF 绝对支持多个窗口和用户定义的控件。

Elmish.WPF 存储库中的许多示例都以一种或另一种方式证明了这一点。例如,NewWindow示例演示了如何打开新窗口,并且SubModel(以及许多其他示例)示例演示了如何使用 custom UserControl。该SubModelSeq样本是目前最复杂的样本,展示了任意深度的递归UserControls 树。

所有这些也都在官方 Elmish.WPF 教程中进行了描述。

(以供将来参考,这是撰写本文时的当前提交;从那时起,示例可能已经更改。)

于 2020-08-13T19:05:19.580 回答