c# – ListBox VirtualizingStackPanel.VirtualizationMode =“回收”在Windows Phone 7.5中不起作用

c# – ListBox VirtualizingStackPanel.VirtualizationMode =“回收”在Windows Phone 7.5中不起作用,第1张

概述我一直在处理我正在研究的 Windows Phone 7.5应用程序中的一些性能问题.我有一个使用VirtualizationMode =“Recycling”和DataTemplate的ListBox.除了性能不佳外,它似乎工作正常.在进行一些性能分析时,我正在看,当我滚动列表时,正在使用62%的CPU正在创建一个自定义用户控件的新实例,我已放置在DataTemplate中.我理解Virtual 我一直在处理我正在研究的 Windows Phone 7.5应用程序中的一些性能问题.我有一个使用VirtualizationMode =“Recycling”和DataTemplate的ListBox.除了性能不佳外,它似乎工作正常.在进行一些性能分析时,我正在看,当我滚动列表时,正在使用62%的cpu正在创建一个自定义用户控件的新实例,我已放置在DataTemplate中.我理解VirtualizationMode =“Recycling”的重点是重用ListBox中的所有UIElements而不需要创建新实例或处理旧实例,所以我希望这正是那种不应该发生的事情.

这是相关的XAML:

<ListBox ItemsSource="{Binding EpisodeRows}" toolkit:TiltEffect.Suppresstilt="True" margin="12,0" VirtualizingStackPanel.VirtualizationMode="Recycling">    <ListBox.ItemTemplate>        <DataTemplate>            <GrID VerticalAlignment="top" Height="111" VirtualizingStackPanel.VirtualizationMode="Recycling" >                <StackPanel OrIEntation="Horizontal" Visibility="{Binding TilesVisibility}">                    <landerGame:LevelTileUserControl PartText="{Binding PartText_1}" scoreText="{Binding scoreText_1}" Star1Visibility="{Binding Star1Vi                    <landerGame:LevelTileUserControl PartText="{Binding PartText_2}" scoreText="{Binding scoreText_2}" Star1Visibility="{Binding Star1Vi                    <landerGame:LevelTileUserControl PartText="{Binding PartText_3}" scoreText="{Binding scoreText_3}" Star1Visibility="{Binding Star1Vi                    <landerGame:LevelTileUserControl PartText="{Binding PartText_4}" scoreText="{Binding scoreText_4}" Star1Visibility="{Binding Star1Vi                    <landerGame:LevelTileUserControl PartText="{Binding PartText_5}" scoreText="{Binding scoreText_5}" Star1Visibility="{Binding Star1Vi                    <landerGame:LevelTileUserControl PartText="{Binding PartText_6}" scoreText="{Binding scoreText_6}" Star1Visibility="{Binding Star1Vi                </StackPanel>                <TextBlock VerticalAlignment="top" Text="{Binding EpisodeTitleText}" Style="{StaticResource PhoneTextExtraLargeStyle}" margin="0,5"             </GrID>        </DataTemplate>    </ListBox.ItemTemplate></ListBox>

这是滚动列表时我的性能分析结果的屏幕截图:

这是列表的样子(这是游戏的级别选择):

我环顾四周,发现任何解决VirtualizationMode =“回收”的文章似乎无法正常工作.在这一点上,任何见解都将是最受欢迎的.

编辑:我已经上传了这个项目的完整相关代码,任何人都可以在这里自己尝试:http://maketag.net/landerGame.rar

解决方法 由于您未提供有关用户控件的任何信息,因此很难测试.

我建议远离ListBox,因为你试图在这里模拟的行为实际上是@L_301_2@.

由于您为每个ListBox项添加了这么多用户控件的方式,我猜它会导致性能下降.如果您切换到WrapPanel然后绑定到您的项目集合,您可能会获得更好的性能,因为每个项目将被虚拟化而不必尝试一次虚拟化六个项目(这可能不起作用).

编辑:查看代码我认为您可以进行一些改进以提高性能.首先,摆脱ListBox并使用如下的ItemsControl:

<controls:Pivot title="LANDER GAME">    <!--Pivot item one-->    <controls:PivotItem header="Episodes">        <ScrollVIEwer>            <ItemsControl ItemsSource="{Binding EpisodeRows}" toolkit:TiltEffect.Suppresstilt="True" margin="12,0">                <ItemsControl.ItemTemplate>                    <DataTemplate>                        <GrID VerticalAlignment="top" Height="111" >                            <StackPanel OrIEntation="Horizontal" Visibility="{Binding TilesVisibility}">                                ...                            </StackPanel>                            <TextBlock VerticalAlignment="top" Text="{Binding EpisodeTitleText}" Style="{StaticResource PhoneTextExtraLargeStyle}" margin="0,5" Visibility="{Binding TitleVisibility}" />                        </GrID>                    </DataTemplate>                </ItemsControl.ItemTemplate>            </ItemsControl>        </ScrollVIEwer>    </controls:PivotItem>

我要做的就是摆脱硬编码的PartText_1,PartText_2类型的变量.只需创建一个项目列表,并在其他项目控件中包含另一个ItemsControl.

只是摆脱ListBox使它更顺畅.我还删除了VirtualizingStackPanel.VirtualizationMode =“Recycling”,因为它在开始时导致了性能损失,一旦加载它看起来更平滑.

总结

以上是内存溢出为你收集整理的c# – ListBox VirtualizingStackPanel.VirtualizationMode =“回收”在Windows Phone 7.5中不起作用全部内容,希望文章能够帮你解决c# – ListBox VirtualizingStackPanel.VirtualizationMode =“回收”在Windows Phone 7.5中不起作用所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1229538.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存