c# - 滚动时 WP7 列表框项目不同步

标签 c# silverlight windows-phone-7 xaml silverlight-toolkit

我的页面有一个列表框,其中包含以下项目模板:

<ListBox x:Name="test">
    <ListBox.ItemTemplate>
        <DataTemplate>
                <Grid MaxHeight="108" Margin="0,0,0,10">
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="4" />
                        <ColumnDefinition Width="auto" />
                        <ColumnDefinition Width="*" />
                    </Grid.ColumnDefinitions>
                    <Rectangle Height="108" Grid.Column="0" Fill="{Binding Color}"/>
                    <Image Source="{Binding Image}" Height="108" Width="108" Grid.Column="1" HorizontalAlignment="Left" Stretch="UniformToFill"/>
                    <StackPanel Grid.Column="2">
                        <TextBlock Text="{Binding Title}" TextWrapping="NoWrap" />
                        <TextBlock Text="{Binding SubHeading}" TextWrapping="NoWrap" />
                        <TextBlock Text="{Binding Body}" TextWrapping="Wrap" />
                    </StackPanel>
                </Grid>
         </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

在页面的 OnNavigatedTo 事件上,我将列表框的项目源设置为一个包含大约 20 个项目的可观察集合。

一切正常,列表已填充,但是当我向上或向下滚动列表时,项目在 UI 上看起来不同步。例如,第一个列表项上显示的文本出现在列表框中的最后一个项目上,有时会出现重复,每次向上或向下滑动时,项目都不一样。

我调试了列表框项目,我可以看到正确的对象被绑定(bind)到正确的项目。因此,只有 UI 上显示的内容不正确。

我还尝试明确使用标准堆栈面板而不是虚拟化堆栈面板,并通过确保所有项目都加载到内存中来解决这个问题。

我不认为移除虚拟化是答案。必须有一个根本原因。然而,这可能是可以接受的,因为我的列表框永远不会真正包含超过 30 个项目。

在另一个页面上,我对 silverlight 工具包 longlistselector 做了同样的事情,并且遇到了同样的问题。但是我不确定如何删除长列表选择器上的虚拟化。

总而言之,导致列表框项在滚动时无法正确更新 UI 的潜在问题可能是什么?如果移除虚拟化是唯一的答案,我该如何在 longlistselector 上执行此操作?

感谢您对此的任何帮助。

最佳答案

也许是某种 this问题? (滚动时跳跃的列表框)

关于c# - 滚动时 WP7 列表框项目不同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10398274/

相关文章:

c# - 如何在 ScrollViewer (WP7) 中执行 RenderTransform?

c# - 如何以编程方式更改堆栈面板内所有(n 个)texblocks 的字体大小?

javascript - 如何根据其他两个带有数值的文本框验证文本框(总计)

asp.net-mvc - 将 Silverlight 应用程序转换为 HTML?请提出建议

silverlight - xna 16bit 纹理看起来像 8bit

silverlight - Silverlight 5 beta 和 Silverlight 2010 年 4 月工具包的问题

javascript - jQuery Mobile 中的页面高度不正确

c# - 在 C# if 语句中检查多个 boolean 条件的最佳方法

c# - ASP.Net PayPal Express Checkout 调用 SetExpressCheckout 并且没有响应

c# - C# 通用 Windows 应用程序如何接受命令行参数 (args)