WP7 Databind with Pivot - 不知道我哪里出错了

时间:2012-02-15 21:57:10

标签: windows-phone-7 data-binding pivot

修改

解决了问题 - 请参阅已接受的答案以获得详细解释!

我的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.cspublic 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 Namepublic 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

我无法在网上找到任何可能有帮助的东西,可能是因为我不确定是什么问题。

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

1 个答案:

答案 0 :(得分:1)

查看最后一个屏幕截图 - 当您设置ItemsSource属性时,Pivot会忽略您明确指定的PivotItems集合,并根据ItemsSource集合生成一个新集合。 因此,您可以尝试删除PivotItem声明并仅使用ItemsSource,将其绑定到视图模型的集合,并使用Pivot.ItemTemplate和Pivot.ItemContainerStyle属性的组合来正确设置轴项目的样式(设置标题和内容)。