f# - 如何使用 Elmish.wpf 和 F# 管理多个窗口、用户控件和自定义控件?

标签 f# elmish-wpf

我是 F# 的新手。我最近了解了 Elmish.wpf 和 MVU 设计。我正在使用的应用程序是 C# WPF,带有许多 WPF 用户控件、自定义控件和窗口。 Elmish.wpf 似乎将 View 模型的概念扁平化为单个数据上下文。 (??)。 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
有一个更好的方法吗?我是不是叫错了树?
提前致谢。

最佳答案

是的,Elmish.WPF 绝对支持多个窗口和用户定义的控件。
很多samples in the Elmish.WPF repo以一种或另一种方式证明这一点。例如,NewWindow示例演示了如何打开新窗口,以及 SubModel (以及许多其他人)示例演示了如何使用自定义 UserControl s。 SubModelSeq样本是目前最复杂的一个,展示了任意深度的递归树UserControl s。
所有这些也在 the official Elmish.WPF tutorial 中有所描述。 .
(以供将来引用, this is the current commit at the time of writing ;样本可能从那时起发生了变化。)

关于f# - 如何使用 Elmish.wpf 和 F# 管理多个窗口、用户控件和自定义控件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63333098/

相关文章:

f# - LiveCharts LabelFormatter 的 Elmish.Wpf 绑定(bind)

f# - 在 FsXaml 和 ElmishWPF 中更新 ProgressBar.Value

f# - 在新的Elmish.WPF 4.0 beta版本中,runWindowWithConfig在哪里?

asynchronous - 从异步函数内部更改 Elmish.WPF 模型

F#,赋值运算符与集合运算符

f# - 文字属性不起作用

c# - 在 f# 中实现接口(interface)

f# - 空隙与单位相反

linq - 如何将 Expr <'a -> ' b> 转换为 Expression<Func<'a, obj>>