2017-08-07 136 views
5

關於MVVM中顯示對話框窗口的幾種好方法存在很多問題。但我看到Gjallarhorn看起來不同。用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.我不知道爲什麼,但我覺得有一個更清潔的解決方案。

回答

4

目前,沒有一個很好的解決方案。該應用程序體系結構基於(鬆散地)在Elm上,該應用程序體系結構適用於單頁應用程序,它實際上不包括「自定義對話框支持」。

現在,您使用的方法可能與我推薦的類似。這就是說,有計劃實施一個完整的導航框架,桌面上的窗口/對話框將考慮到該設計。未來,可能會有專門的指導。

相關問題