视图模型之间的绑定属性



假设我有两个视图:FileListEditor。它们都有自己的视图模型,使用DependencyProperty绑定。视图模型看起来有点像这样:

public class FileVM : INotifyPropertyChanged
{
public string FileName { get; set; }
}
public class FileListVM : INotifyPropertyChanged
{
public ObservableCollection<FileVM> Files { get; set; }
public FileVM SelectedFile { get; set; }
}
public public class EditorVM : INotifyPropertyChanged
{
string FileName { get; set; }
}

想象一下,他们正确地实现了INotifyPropertyChanged

现在我不想让FileListVMEditorVM互相了解。他们可以很容易地独立存在。但在一个用例中,我想将FileListVM.SelectedFile.FileName绑定到EditorVM.FileName。每当选定的文件或文件名发生更改时,编辑器中的文件名也应发生更改。每当编辑器在编辑器中更改文件名时,所选文件的名称也应该更改。

现在我的问题是:我如何才能做到这一点?我猜解决方案在它们的父视图模型(例如MainVM(中,因为该视图模型知道两个子视图模型之间的连接。但我不确定是否可以通过xaml将两者连接起来,如果可能的话,我希望避免编写属性更改的事件处理程序。

请查看:MVVM 中视图模型之间的通信

我建议使用像Galasoft这样的MVVM框架,因为它们具有有用的功能,而且通常使用MVVM会更轻松;(

如果您不喜欢使用它们,您可以在一个VM中添加事件SelectedFileChanged,并从另一个VM订阅它。

相关内容

  • 没有找到相关文章

最新更新