2012-02-15 47 views
0

编辑:WP7数据绑定与透视 - 不知道我要去哪里错了

摸索出了问题 - 见接受的答案了很好的解释!

我的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每个美食(包括一个“全部”)。

A CuisineViewModel具有public string Cuisinepublic ObservableCollection<OutletViewModel> Outlets

OutletViewModel包含一个public string Name和一个public string Cuisine - 每个触发PropertyChanged事件。

我想用设计样本数据是:(也,我不能在这个文件中多次指定同一插座 - VS名称XYZ表示已经在当前的名字范围存在)

<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

我一直没能找到任何在线可能的帮助,可能是因为我不知道什么是错的。

任何建议或指针将不胜感激:)

回答

1

望着最后截图 - 当您设置ItemsSource属性,枢轴忽略明确指定PivotItems的收集和基于该的ItemsSource一个新采集。 因此,您可以尝试删除PivotItem声明并仅使用ItemsSource,将其绑定到视图模型的集合并使用Pivot.ItemTemplate和Pivot.ItemContainerStyle属性的组合来正确地设置透视项目的样式(设置标题和内容)。

+0

我今天又看了一遍,并解决了这个问题,但这是我做的,所以接受这个答案:) – Josh 2012-02-16 14:04:07

相关问题