修改
解决了问题 - 请参阅已接受的答案以获得详细解释!
我的XAML现在看起来像这样:
<controls:Pivot x:Name="MainPivot" Title="FYP APP" ItemsSource="{Binding Cuisines}">
<controls:Pivot.HeaderTemplate>
<DataTemplate>
<TextBlock Text="{Binding Cuisine}"/>
</DataTemplate>
</controls:Pivot.HeaderTemplate>
<controls:Pivot.ItemTemplate>
<DataTemplate>
<ListBox Margin="0,0,-12,0" ItemsSource="{Binding Outlets}">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Margin="0,0,0,17" Width="432" Height="78">
<TextBlock Text="{Binding Name}" TextWrapping="Wrap" Style="{StaticResource PhoneTextExtraLargeStyle}"/>
<TextBlock Text="{Binding Cuisine}" TextWrapping="Wrap" Margin="12,-6,12,0" Style="{StaticResource PhoneTextSubtleStyle}"/>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</DataTemplate>
</controls:Pivot.ItemTemplate>
</controls:Pivot>
原始
我正在使用VS提供的示例页面构建数据透视表页面。
我有一个餐馆列表,我希望能够通过向左/向右滑动枢轴来过滤(例如http://img831.imageshack.us/img831/514/pivotm.jpg)。
我列出了App.xaml.cs
(public static ObservableCollection<OutletViewModel> LocalOutlets
中从MainPage构造函数填充的所有餐馆的列表),然后处理它以创建此结构:
OutletListPage2.xaml.cs
(我正在处理的页面)将DataContext
设置为新的OutletsByCuisineViewModel()
。
OutletsByCuisineViewModel
有一个public ObservableCollection<CuisineViewModel> Cuisines
,其中包含每个菜肴的CuisineViewModel
(包括“全部”菜肴)。
CuisineViewModel
有一个public string Cuisine
和一个public ObservableCollection<OutletViewModel> Outlets
。
OutletViewModel
包含public string Name
和public string Cuisine
- 每个都会触发PropertyChanged
事件。
我想要使用的设计样本数据是:(另外,我不能在此文件中多次指定相同的插座 - VS表示名称XYZ已存在于当前名称范围内) < / p>
<local:OutletsByCuisineViewModel
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:FYP.ViewModels">
<local:OutletsByCuisineViewModel.Cuisines>
<local:CuisineViewModel Cuisine="all">
<local:CuisineViewModel.Outlets>
<local:OutletViewModel Name="Test1" Cuisine="fast food" />
<local:OutletViewModel Name="Test2" Cuisine="indian" />
<local:OutletViewModel Name="Test3" Cuisine="pizza" />
</local:CuisineViewModel.Outlets>
</local:CuisineViewModel>
<local:CuisineViewModel Cuisine="fast food">
<local:CuisineViewModel.Outlets>
<local:OutletViewModel Name="Test1a" Cuisine="fast food" />
</local:CuisineViewModel.Outlets>
</local:CuisineViewModel>
<local:CuisineViewModel Cuisine="indian">
<local:CuisineViewModel.Outlets>
<local:OutletViewModel Name="Test2a" Cuisine="indian" />
</local:CuisineViewModel.Outlets>
</local:CuisineViewModel>
<local:CuisineViewModel Cuisine="pizza">
<local:CuisineViewModel.Outlets>
<local:OutletViewModel Name="Test3a" Cuisine="pizza" />
</local:CuisineViewModel.Outlets>
</local:CuisineViewModel>
</local:OutletsByCuisineViewModel.Cuisines>
</local:OutletsByCuisineViewModel>
我在XAML设计器中有以下内容 - http://img844.imageshack.us/img844/8464/pivot2.jpg
我无法在网上找到任何可能有帮助的东西,可能是因为我不确定是什么问题。
任何建议或指示都将不胜感激:)
答案 0 :(得分:1)
查看最后一个屏幕截图 - 当您设置ItemsSource属性时,Pivot会忽略您明确指定的PivotItems集合,并根据ItemsSource集合生成一个新集合。 因此,您可以尝试删除PivotItem声明并仅使用ItemsSource,将其绑定到视图模型的集合,并使用Pivot.ItemTemplate和Pivot.ItemContainerStyle属性的组合来正确设置轴项目的样式(设置标题和内容)。