【发布时间】:2016-10-21 00:25:38
【问题描述】:
我对 WPF 和 MVVM 非常陌生,这让我很头疼。由于导航问题,我决定一次显示所有内容。我想我会创建一个新的 ViewModel (MainViewModel) 来包含我的另外两个 ViewModel(StudentViewModel 和 AddStudentsViewModel)。
MainViewModel 包含类似这样的内容:
private StudentViewModel _studentVM;
private AddStudentsViewModel _addStudentsVM;
public StudentViewModel StudentVM
{
get { return _studentVM; }
set
{
if (_studentVM != value)
{
_studentVM = value;
NotifyPropertyChanged("StudentVM");
}
}
}
(public AddStudentsViewModel AddStudentsVM 也存在,我只是想保持简短)
我已成功将StudentVM 和AddStudentsVM 绑定到我的主视图,因为我可以在初始化阶段以编程方式设置值,并且在调试时,我可以看到我的按钮点击被重定向到正确的方法。甚至看起来我已经成功地将学生添加到对象中,但是我的主视图并没有反映这些变化。
我在MainViewModel 中遗漏了什么吗?还是 ViewModel 无法看到其中任何其他 ViewModel 的变化?
【问题讨论】:
-
如果你添加绑定所在的视图代码部分,你的帖子仍然会很短。
-
您需要在您的子视图模型上公开一个方法,该方法允许您在这些模型上提出
NotifyPropertyChanged()。然后在方法中,您可以只使用一个空字符串作为属性名称,这会导致从该视图模型刷新视图中的所有绑定。 -
您需要在问题中添加更多信息。您在哪个属性上调用 setter?视图如何引用数据上下文? xaml 中的绑定是什么样的?你期待什么,你实际得到什么?提供这些信息,您可能会得到更具体的答案。
标签: wpf mvvm view-model-pattern