FlipView仅显示第一个项目

时间:2016-03-27 18:13:49

标签: xaml win-universal-app

我有一些类似的代码:

<FlipView UseTouchAnimationsForAllNavigation="False" ItemsSource="{Binding Records}" SelectedItem="{Binding Record, Mode=TwoWay}">
    <FlipView.ItemTemplate>
        <DataTemplate x:DataType="Models:Record">
            <TextBlock x:Name="debugText" Text="{x:Bind Name}" />
            <UC:MyControl Record="{x:Bind Mode=OneWay, Converter={StaticResource myConverter}}" />
        </DataTemplate>
    </FlipView.ItemTemplate>
</FlipView>

MyControl需要使用myConverter转换日期,然后显示Record的详细信息。它显示图像,名称等。 TextBlock debugText是为了调试目的而创建的。

当我手动或按代码移动FlipView时,元素正在正确转换。我可以调试SelectedItem如何正确更新,我可以正确看到debugText更新。

但出于某种原因,MyControl在第一项之间循环。它只显示3或4个第一项,在到达第3或第4项后,它再次显示第一项。我调试转换器myConverter,我可以看到它被加载视图3或4次。但是,即使我转换到下一个元素,它也不会被调用。

UseTouchAnimationsForAllNavigation="False"时仅显示3个第一个元素,在UseTouchAnimationsForAllNavigation="True"时显示4个第一个元素。

通过撰写FlipView.ItemsPanel

,我可以设法正确显示所有项目
<FlipView.ItemsPanel>
    <ItemsPanelTemplate>
        <StackPanel AreScrollSnapPointsRegular="True" Orientation="Horizontal" />
    </ItemsPanelTemplate>
</FlipView.ItemsPanel>

但它不是我的解决方案,因为有很多Records(可能超过300),并且以这种方式完成页面加载需要很长时间,浪费了太多内存。当我在手机中以此模式运行时,应用程序甚至会在有许多记录时崩溃。

如何让它超过3或4个第一项呢?

0 个答案:

没有答案