我有一个 MainView,它在我的 WPF 应用程序中有一个关联的 MainViewModel,通过它的构造函数分配。
应用程序 >启动 uri > MainWindow.xaml
public MainWindow()
{
InitializeComponent();
var viewModel = new MainViewModel();
DataContext = viewModel;
}
我的 MainView 包含多达四个嵌套视图或子视图,它们根据在 MainView 上单击的按钮隐藏和显示。因此,我们通过绑定来切换可见性属性,该绑定通过分配给 MainView 上每个按钮的命令绑定进行更新。
每个嵌套视图都没有关联的 ViewModel,在子视图上找到的所有绑定都在 MainViewModel 中找到它们的信息。因此,绑定系统结束爬上应用程序的 UI 树以找出父“MainView”具有关联的 ViewModel。
所以总的来说有'ONE'-> ViewModel。这似乎工作正常,但正如预期的那样,这个虚拟机已经变得很大并且需要重构。它包含在上下文中不应包含的信息。但这是一个证明概念的应用。所以我决定保持简单并确保它是可行的。
问题:
当我尝试使用空视图模型分配空视图时,我注意到输出窗口中的绑定错误以及预期的奇怪和损坏的行为。这没有任何意义......有没有更清晰和简洁的方法让 WPF 知道如何处理它在嵌套视图控件中找到的任何绑定?我认为如果每个视图的构造函数都为自己分配了一个对应的 VM,如上所示,那么它应该可以正常工作,因为这在逻辑上是有意义的。不幸的是,当指定打开和隐藏其他视图的相应视图具有关联的 ViewModel 时,MainView 上的所有按钮都停止工作。在某些按钮上它可以工作,而在其他按钮上它没有?这真的很奇怪吗?