与Gjallarhorn一起展示对话窗口的好方法是什么?

时间:2017-08-07 21:45:03

标签: wpf f# gjallarhorn

关于向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。我不知道为什么,但我觉得有一个更清洁的解决方案。

1 个答案:

答案 0 :(得分:4)

目前,没有一个很好的解决方案。应用程序体系结构(松散地)基于Elm,它面向单页面应用程序,实际上不包括“自定义对话框支持”。

目前,您使用的方法可能类似于我推荐的方法。

话虽如此,有计划实施完整的导航框架,桌面上的窗口/对话框将与该设计一起考虑。在未来,可能会有针对性的指导。