2013-05-14 37 views
-1

我有一个主题列表,每个主题都有一些示例。我希望能够做的是,当选择一个主题时,我将使用该选定主题的所有示例填充另一个视图。我仍然在学习MVVM,所以不知道如何实现这样的。MVVM:当从另一个视图(带有列表框)中选择一个项目时,填充一个视图(带有列表框)

编辑: 我试图做的是有两个单独的视图(1为主题,1为例子),当一个主题被选中时,我会'动态'填充示例的集合并在示例视图的列表框中显示它们。

这是我到目前为止,我的想法是通过视图模型实例到TopicViewModel什么,但我不确定如何做到这一点,如果这两种观点都在主窗口的XAML设置:

public TopicViewModel SelectedTopic 
{ 
    get { return _selectedTopic; } 
    set 
    { 
     _selectedTopic = value; 
     OnPropertyChanged("SelectedTopic"); 

     //refresh list of exercises 
     if (_exampleViewModel != null) 
     { 
      _exampleViewModel.RefreshExercises(_selectedTopic.ID); 
     } 
    } 
} 

回答

0

让我们假设你有这样的事情:

class Topic 
{ 
    public ObservableCollection<Example> Examples { get; private set; } 
} 

,并在您的视图模型的地方是:

public ObservableCollection<Topic> Topics { get; private set; } 

然后你在主题列表框结合可能是这样的:

<ListBox x:Name="topicsListBox" ItemsSource="{Binding Topics}" /> 

然后,您可以绑定到这个ListBox的选定项的Examples这样的:

<ListBox x:Name="examplesListBox" 
     ItemsSource="{Binding SelectedItem.Examples, ElementName=topicsListBox}"/> 
+0

好吧,试图破译你的例子,并将其应用于我的案例。我不能将ExampleViewModel传递给ExampleView,它应该反映在列表框中? – 2013-05-14 09:04:08

+0

@RodelioMartinezRodriguez我以为你想在列表框中显示一个* Collection *的ExampleViewModels?我猜你可以在另一个视图上将SelectedItem(类型为Topic)设置为DataContext,然后将ListBox的ItemsSource设置为{绑定示例} – Botz3000 2013-05-14 09:06:47

+0

在我的ExamplesViewModel中,已经有一个ObservableCollection的Examples模型可以绑定到列表框。每个ExampleView只有一个ExamplesViewModel。 – 2013-05-14 09:19:18

0

取决于你需要多少数据与工作,恕我直言,最简单的方法是这样的。

首先使用的ObservableCollection所有名单都

有一个包含每个主题视图模型包含的例子

父视图模型有一个列表的主题视图模型 列表中选择一个主父视图模型一个将保存当前选定主题的属性。

在您的视图中,您可以使用2个列表框。一个绑定到主题列表。另一个绑定到所选主题的例子列表。

在网上有一堆例子与这个东西。 这个计算器的问题显示了如何绑定到列表中,选择的项目 MVVM: Binding to ListBox.SelectedItem?

+0

编辑我的问题显示一些代码,不知道我不能在评论中发布代码。 – 2013-05-14 08:46:12

0

如果我正确

了解你,你有一个窗口的2倍View的可以看到每个角度都有在这里自己的视图模型,对这么远?

所以你应该可能我们一个调解员resp。一个eventaggregation

现在你可以从一个视图模型认购,并从另一个

发布得到一个中保RESP。一个Eventaggregation

你可以使用存在的框架,如

或创建自己的

+0

是的,你是对的。将尝试查看您已推荐的内容,谢谢! – 2013-05-15 05:02:23

+0

看起来像我可以尝试这里提出的方法:http://stackoverflow.com/questions/14412405/what-is-the-correct-way-to-pass-data-between-view-models – 2013-05-15 05:29:19

+0

@RodelioMartinezRodriguez是的东西他的'ViewModel1'将会是你的'ParentViewModel' – WiiMaxx 2013-05-15 07:41:28

相关问题