关于向MVVM显示对话窗口的几种好方法存在很多问题。但我看到Gjallarhorn看起来与众不同。
我必须显示几个对话框,例如我每个对话框都有一个动作。
type Action =
|Show
|Open
|Input
|Change
|Statistic
和几个窗口
module Views
open FsXaml
...
type StatisticWindow = XAML<"StatWindow.xaml">
type InputWindow = XAML<"InputWindow.xaml">
...
我展示它的方式
let showDialog (context:BindingSource) (view : System.Windows.Window) =
view.DataContext <- context
view.ShowDialog() |> ignore
let getViewByAction =
function
|Statistic -> Views.StatisticWindow() :> System.Windows.Window
|Input -> Views.InputWindow() :> System.Windows.Window
| ...
let getContextByAction model =
function
| Statistic -> statContext model
| Input -> inputContext model
| ...
let performAction model action =
let context = getContextByAction model action
getViewByAction action
|> showDialog context
这是适合此目的的方法吗?
P.S。我不知道为什么,但我觉得有一个更清洁的解决方案。
答案 0 :(得分:4)
目前,没有一个很好的解决方案。应用程序体系结构(松散地)基于Elm,它面向单页面应用程序,实际上不包括“自定义对话框支持”。
目前,您使用的方法可能类似于我推荐的方法。
话虽如此,有计划实施完整的导航框架,桌面上的窗口/对话框将与该设计一起考虑。在未来,可能会有针对性的指导。