2017-08-07 4 views
5

MVVMに続くダイアログウィンドウを表示するには、いくつかの良いアプローチについて多くの質問があります。しかし、私はGjallarhornが違って見える。Gjallarhornでダイアログウィンドウを表示するには、どのような方法が適していますか?

私はいくつかのダイアログを表示する必要があります。たとえば、ダイアログごとに1つのアクションがあります。

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に基づいていましたが、実際には「カスタムダイアログのサポート」は含まれていません。

現在、使用しているアプローチは、私がお勧めするものと似ている可能性があります。

言われているように、完全なナビゲーションフレームワークを実装する計画があり、デスクトップ上のウィンドウ/ダイアログがそのデザインに考慮されます。将来的には、その周りにガイダンスが存在する可能性があります。

関連する問題