1

在 WPF MVVM 应用程序中,您拥有包含视图背后的所有逻辑的视图模型,以及显示事物的视图。做事是通过命令链接的,命令在视图模型类中实现。

当我想在启动窗口的中心打开一个新的对话窗口时,我需要将 WindowStartupLocation = CenterOwner 以及 Owner = something 设置为新的对话窗口。不幸的是,必须将 Owner 属性设置为视图,但视图在视图模型中永远是未知的。

那么这应该如何协同工作呢?

疯狂猜测:我是否必须将视图的位置和大小绑定到视图模型并手动定位新对话框,而不是使用 CenterOwner 自动?

4

1 回答 1

1

但是视图在视图模型中永远是未知的。

理想情况下,ViewModel 完全不知道使用它的 View。但正如您发现的那样,这并不总是可行的。

因此,光耦合很常见,例如作为 BaseViewModel 中的 View 属性。

但是您的 VM 不应使用视图中的任何特定控件或其他详细信息。

于 2012-07-02T07:53:22.143 回答