UI-ViewModel 中的特定值
UI-specific values in ViewModel
在 ViewModel
中使用 UI 特定值如 System.Windows.ResizeMode
或 System.Windows.WindowState
是错误的吗?我正在使用 Caliburn.Micro 的 WindowManager,它在 ShowWindow
方法中有视图设置字典。除了这个,我不知道设置 window 属性的任何其他(简单)方法。
Imports Caliburn.Micro
Namespace ViewModels
Public Class MainWindowViewModel
Inherits PropertyChangedBase
Private _windowManager As IWindowManager
Sub New(windowManager As IWindowManager)
_windowManager = windowManager
End Sub
Sub ShowUserControl()
Dim windowSettings As New Dictionary(Of String, Object)
windowSettings.Add("ResizeMode", ResizeMode.NoResize)
_windowManager.ShowDialog(New UserControl1ViewModel, settings:=windowSettings)
End Sub
End Class
End Namespace
Is it wrong to use UI-specific values like System.Windows.ResizeMode or System.Windows.WindowState in ViewModel?
不是真的。这不会破坏 MVVM 模式。视图模型是视图的模型。这是否是一个问题主要取决于您是否在几种不同类型的客户端应用程序之间共享您的视图模型 类,例如 WPF 桌面应用程序和 Xamarin 移动应用程序。
在这种情况下,您应该更愿意从视图模型中公开原始类型,然后在每个特定类型的客户端应用程序中使用转换器在视图模型类型和相应的视图类型之间进行转换。
但从理论上讲,就 MVVM 而言,视图模型不必与构建视图的 UI 技术无关。
在 ViewModel
中使用 UI 特定值如 System.Windows.ResizeMode
或 System.Windows.WindowState
是错误的吗?我正在使用 Caliburn.Micro 的 WindowManager,它在 ShowWindow
方法中有视图设置字典。除了这个,我不知道设置 window 属性的任何其他(简单)方法。
Imports Caliburn.Micro
Namespace ViewModels
Public Class MainWindowViewModel
Inherits PropertyChangedBase
Private _windowManager As IWindowManager
Sub New(windowManager As IWindowManager)
_windowManager = windowManager
End Sub
Sub ShowUserControl()
Dim windowSettings As New Dictionary(Of String, Object)
windowSettings.Add("ResizeMode", ResizeMode.NoResize)
_windowManager.ShowDialog(New UserControl1ViewModel, settings:=windowSettings)
End Sub
End Class
End Namespace
Is it wrong to use UI-specific values like System.Windows.ResizeMode or System.Windows.WindowState in ViewModel?
不是真的。这不会破坏 MVVM 模式。视图模型是视图的模型。这是否是一个问题主要取决于您是否在几种不同类型的客户端应用程序之间共享您的视图模型 类,例如 WPF 桌面应用程序和 Xamarin 移动应用程序。
在这种情况下,您应该更愿意从视图模型中公开原始类型,然后在每个特定类型的客户端应用程序中使用转换器在视图模型类型和相应的视图类型之间进行转换。
但从理论上讲,就 MVVM 而言,视图模型不必与构建视图的 UI 技术无关。