我正在使用MVVM,我知道数据的通信是View <=> ViewModel <=> Model.
ViewModel可以使用双向绑定与View进行交互.
但是现在我有一个LoginView(在Window中),如果登录成功将在ViewModel中检查.
当它失败时,它应该告诉窗口关闭.但是......怎么样?ViewModel不应该知道View ....
您的ViewModel表示您的UI状态.您可以简单地IsLoginWindowVisible公开一个布尔属性,然后您的视图可以拥有代码(是的,我说,视图可以有代码!),它根据此属性的状态显示/隐藏窗口.
我认为人们对MVVM的压力过大.只要您的ViewModel可以在没有视图的情况下执行,为了便于测试,您正在正确地执行MVVM.使用代码来支持您的视图没有任何问题.