关于在 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
是否适合此目的?
PS我不知道为什么,但我觉得有一个更清洁的解决方案来完成这项任务。