GridView显示最后一项WinRT的错误数据

时间:2015-03-03 14:31:21

标签: c# gridview windows-runtime windows-8.1

我有一个奇怪的问题,我绑定到CollectionViewSource的GridView显示最后一项的错误数据。但实际绑定是正确的。如果我监听ItemClicked,DataContext是正确的,UI只是显示GridView中前一项的信息。我的目标是绑定到CollectionViewSource中的一组分组数据,但是如果我只是直接绑定到ObservableCollection,我甚至会发生这种情况。

这是我的XAML:

<Page.Resources>
<CollectionViewSource x:Name="CuratedCVS" IsSourceGrouped="True"  />
</Page.Resources>

<SemanticZoom Padding="0">
<SemanticZoom.ZoomedInView>
    <GridView x:Name="CuratedFeedsList" 
              ItemsSource="{Binding Source={StaticResource CuratedCVS}}"
              ItemTemplate="{StaticResource CuratedFeedItemTemplate}"
              SelectedItem="{Binding SelectedFeed, Mode=TwoWay}"
              SelectionMode="Single"
              IsSwipeEnabled="True"
              IsSynchronizedWithCurrentItem="False"
              ShowsScrollingPlaceholders="True"
              Padding="20,0">
        <GridView.GroupStyle>
            <GroupStyle HeaderTemplate="{StaticResource CuratedFeedHeaderTemplate}"/>
        </GridView.GroupStyle>
    </GridView>
</SemanticZoom.ZoomedInView>
<SemanticZoom.ZoomedOutView>
    <ListView Background="{Binding SecondaryBackgroundBrush, Source={StaticResource ThemeManager}}" 
              ItemsSource="{Binding Source={StaticResource CuratedCVS}, Path=CollectionGroups}"
              ItemTemplate="{StaticResource CuratedFeedJumpTemplate}"
              Padding="0,10">
    </ListView>
</SemanticZoom.ZoomedOutView>
</SemanticZoom>

这是我的数据分组代码(似乎有效):

var result =
        from f in CuratedFeeds
        group f by f.Category into g
        orderby g.Key
        select g;
    CuratedCVS.Source = result;

(CuratedFeeds是一个ObservableCollection)

有没有人见过这个?这只发生在Windows 8.1应用程序中。它在Windows Phone 8.1应用程序中完美运行。

1 个答案:

答案 0 :(得分:0)

所以我发现了问题所在,不幸的是,它与我发布的代码没有任何关系。我正在自定义ItemContainerStyle,我使用了这个:

<ListView.ItemContainerStyle>
    <Style TargetType="ListViewItem">
        <Setter Property="HorizontalContentAlignment" Value="Stretch"/>
        <Setter Property="Margin" Value="0"/>
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate>
                    <ListViewItemPresenter Content="{Binding}" Margin="0"
                                           SelectedBackground="{Binding SecondaryBackgroundBrush, Source={StaticResource ThemeManager}}"
                                           SelectedForeground="{Binding ForegroundBrush, Source={StaticResource ThemeManager}}"
                                           PlaceholderBackground="{Binding BackgroundBrush, Source={StaticResource ThemeManager}}"
                                           PointerOverBackground="{Binding SecondaryBackgroundBrush, Source={StaticResource ThemeManager}}"
                                           SelectionCheckMarkVisualEnabled="False"
                                           Padding="0,0,0,0"/>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
</ListView.ItemContainerStyle>

在此代码中,问题是内容=&#34; {Binding}&#34; 。我不知道为什么,但这搞砸了数据。我所要做的就是删除 Content =&#34; {Binding}&#34; ,它完美无缺。