Windows phone 7 从ViewModel在UserControl中设置DataContext

Windows phone 7 从ViewModel在UserControl中设置DataContext,windows-phone-7,mvvm-light,Windows Phone 7,Mvvm Light,我有一个包含列表框的视图。我称之为CityListingPage.xaml。此列表页有一个CityListingViewModel,它与视图绑定在一起,如下所示: DataContext="{Binding CityListing, Source={StaticResource Locator}}" 这很有效。现在我想知道如何将我的页面更改为Pivot控件,其中Pivot项将是CityListingViewModel的实例,但显然具有不同的构造函数数据(即国家) 我将ListBox提取到一个U

我有一个包含列表框的视图。我称之为CityListingPage.xaml。此列表页有一个CityListingViewModel,它与视图绑定在一起,如下所示:

DataContext="{Binding CityListing, Source={StaticResource Locator}}"
这很有效。现在我想知道如何将我的页面更改为Pivot控件,其中Pivot项将是CityListingViewModel的实例,但显然具有不同的构造函数数据(即国家)

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

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


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

在没有看到您的代码的情况下,我将做一些猜测,但我认为您可以通过数据绑定直接做到这一点。由于每个pivot项都会获得CityListingViewModel的一个实例,因此您可以将该绑定传递给UserControl:


如果您发布更多的代码来显示您正在尝试执行的操作,我们可能会提供更多帮助。

如果您正在考虑在一个透视页面上的多个视图上对同一数据进行分区,那么我建议不要使用多个视图模型,尤其是如果您对所有数据使用的是同一个数据源

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


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

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

第二个职位应该更相关