从ViewModel在UserControl中设置DataContext

时间:2011-10-16 18:44:13

标签: windows-phone-7 mvvm-light

我有一个包含列表框的视图。我将其称为CityListingPage.xaml。这个列表页面有一个CityListingViewModel,它与View绑定在一起,就像这样:

DataContext="{Binding CityListing, Source={StaticResource Locator}}"

这很好用。现在我将我的页面更改为Pivot控件,其中Pivot项目将是CityListingViewModel的实例,但显然具有不同的构造函数数据(即国家/地区)

我将ListBox提取到UserControl中。现在我正在努力如何使这项工作,以便为每个列表我得到一个CityListingViewModel的新实例。

我尝试在ViewModelLocator中创建CityListingViewModel的集合,但是如何将CityListingViewModel实例传递给UserControls DataContext?

也许有一种不同的,更好的方法可以做到这一点?

3 个答案:

答案 0 :(得分:1)

如果没有看到您的代码,我会做一些猜测,但我认为您可以通过数据绑定直接进行。由于每个数据透视表项都是获取CityListingViewModel的实例,因此您只需将该绑定传递给UserControl:

如果您发布更多代码来展示您正在尝试做的事情,我们可能会提供更多帮助。

答案 1 :(得分:1)

以下是使用集合创建全景页面的两个答案。但我确信这种方法可以适应数据透视页面:

第二篇文章应该更具相关性。

答案 2 :(得分:0)

如果您正考虑在数据透视表页面上的多个视图上对相同数据进行分区,那么我建议不要使用多个视图模型,特别是如果它与您用于所有数据的数据源相同。

只需拥有一个参数,每个视图都会绑定到该参数,并使用Linq来控制该参数可见的数据。

因此,您将拥有包含要显示的所有数据的变量,以及每个查询该数据的一个参数。