在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这是实现这一目的的合适方法?
我不知道为什么,但我觉得这个任务有一个更干净的解决方案。
发布于 2017-08-07 23:16:40
目前,还没有一个很好的解决办法。应用程序体系结构(松散地)基于Elm,它面向单个页面应用程序,实际上不包括“自定义对话框支持”。
现在,您使用的方法可能与我推荐的方法类似。
尽管如此,也有计划实现一个完整的导航框架,桌面上的windows/dialogs将在这个设计中得到考虑。在未来,可能会有具体的指导。
https://stackoverflow.com/questions/45556164
复制相似问题