在WPF MVVM应用程序中,您拥有包含视图背后所有逻辑的视图模型以及显示内容的视图。做事通过命令链接,命令在视图模型类中实现。
当我想在启动窗口的中心打开一个新的对话框窗口时,我需要将WindowStartupLocation = CenterOwner以及Owner = something设置到新的对话框窗口。遗憾的是,必须将Owner属性设置为视图,但视图模型中永远不会知道该视图。
那怎么能一起工作呢?
狂野猜测:我是否必须将视图的位置和大小绑定到视图模型并手动定位新对话框,而不是使用CenterOwner自动更新?
答案 0 :(得分:1)
但视图模型中从未知道该视图。
理想情况下,ViewModel完全不知道使用它的View。但是你发现这并不总是实用的。
因此,通常使用光耦合,例如作为BaseViewModel中的View属性。
但是您的VM不应使用View中的任何特定控件或其他详细信息。