我有一个MainView,它在我的WPF应用程序中有一个关联的MainViewModel,通过它的构造器进行赋值。将单个视图模型分配给嵌套视图?
应用>启动URI> MainWindow.xaml
public MainWindow()
{
InitializeComponent();
var viewModel = new MainViewModel();
DataContext = viewModel;
}
我的MainView拥有多达四个嵌套观点或谁是隐藏和显示基于已按钮子视图点击MainView。因此,我们切换可见性属性vi通过分配给MainView上每个按钮的命令绑定更新的绑定。
每个嵌套的View没有关联的ViewModel,在子视图上找到的所有绑定都会在MainViewModel中查找它们的信息。因此,绑定系统会结束应用程序的UI树,以发现父级MainView具有关联的ViewModel。
所以整体上有'ONE' - > ViewModel。这似乎工作得很好,但正如预期的那样,虚拟机已经变得很大,需要重新分解。它拥有上下文不应该包含的信息。但这是一个证明概念应用程序。所以我决定保持简单并确保它可以实现。
问题:
当我试图与分配我在输出窗口和预期的怪异和不正常的行为发现绑定错误空视图模型空视图。这是没有道理的......是否有更简洁明了的方式让WPF知道如何处理它在嵌套视图控件中找到的任何绑定?我认为如果每个视图的构造函数如上所示为自己分配了一个对应的虚拟机,那么它应该工作,因为这在逻辑上是合理的。不幸的是,当它指定打开并隐藏其他视图的相应视图时,MainView上的所有按钮都会停止工作,并且具有关联的ViewModel。在一些按钮上起作用,而其他按钮则不起作用?这真的很奇怪?