在一个窗口中有多个视图(MVVM)

在一个窗口中有多个视图(MVVM),mvvm,view,Mvvm,View,我正在尝试学习MVVM,作为一个没有导师的新人,有时候会很困惑。现在我有一个问题: **在一个窗口中,我使用了来自不同模型视图的3个不同视图。 **每个视图用于从分支中选择一个项目,我们将遍历该树。 **首先,我选择了我的书 **第二个视图将显示该书的页面 **我希望最后一个视图显示该页面的练习 到目前为止,我能够将第一个视图绑定到书籍上。现在,如何将第二个视图的源绑定到第一个视图的slectedItem 有几种方法可以实现您的目标。例如 public class Exercise{} p

我正在尝试学习MVVM,作为一个没有导师的新人,有时候会很困惑。现在我有一个问题:

**在一个窗口中,我使用了来自不同模型视图的3个不同视图。 **每个视图用于从分支中选择一个项目,我们将遍历该树。 **首先,我选择了我的书 **第二个视图将显示该书的页面 **我希望最后一个视图显示该页面的练习

到目前为止,我能够将第一个视图绑定到书籍上。现在,如何将第二个视图的源绑定到第一个视图的slectedItem


有几种方法可以实现您的目标。例如

 public class Exercise{}

 public class Page 
 {
    public List<Exercise> MyExercise {get;set;}
 }

 public class Book
 {
    public List<Page > MyPages {get;set;}
 }
公共类练习{}
公共类页面
{
公共列表MyExercise{get;set;}
}
公共课堂用书
{
公共列表MyPages{get;set;}
}
视图模型

 public ObservableCollection<Book> MyBooks {get;set;}
publicobservableCollection MyBooks{get;set;}
xaml


这当然只是一种方法


ps:代码是手写的,所以请检查错误

好的,我要感谢所有读过这篇文章并试图提供帮助的人,特别是你们的“Blindmeis,Jen H”

多谢各位

我知道这种情况太普遍了,我就是找不到

所以我找到了两种方法,这两种方法都是很好的解决方案

  • 使用Microsoft Prism。(这是一种在WPF中轻松制作模块化程序的模式)

  • 使用主细节模式


  • 所以我的问题解决了。希望它对您也有用。

    如果有人能为我提供一个示例应用程序的链接,那就太好了。这可能符合您的方向:
     <ListBox x:Name=books ItemsSource="{Binding MyBooks}"/>
     <ListBox x:Name=pages ItemsSource="{Binding ElementName=books,Path=SelectedItem}"/>
     <ListBox ItemsSource="{Binding ElementName=pages,Path=SelectedItem}"/>