性能 - ListBox 中的 Silverlight ContextMenuService [英] Performance - Silverlight ContextMenuService in ListBox

查看:24
本文介绍了性能 - ListBox 中的 Silverlight ContextMenuService的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

使用 Silverlight5、RIA 服务、DataPager 对 ListBox 进行 7500 行查询.

遇到一个有趣的问题 - 在翻阅 500 个左右的项目后,内存使用量从 70MB 增加到 250MB ish,并且性能下降得可怕.

如果我注释掉 ContextMenuService,一切正常.

问题:如何在每个列表框项上实现高性能的右键单击功能?

<ListBox x:Name="AccountItems" SelectionMode="Extended" ItemsSource="{Binding Data, ElementName=AccountsDataSource}" ScrollViewer.Horizo​​ntalScrollBarVisibility="Disabled"><ListBox.ItemTemplate><数据模板><ListBoxItem><TextBlock Grid.Column="2" Name="textBlockCaptionFirstName" Text="{Binding FirstName}" Horizo​​ntalAlignment="Left" TextAlignment="Center" TextWrapping="Wrap" ><!-- 右键单击​​--><controlsInputToolkit:ContextMenuService.ContextMenu><controlsInputToolkit:ContextMenu><controlsInputToolkit:MenuItem Header="将帐户转换为另一个用户" Click="Person_Click"><controlsInputToolkit:MenuItem.Icon><矩形宽度=16"高度=16"填充={StaticResource PersonAccountIcon}"/></controlsInputToolkit:MenuItem.Icon></controlsInputToolkit:MenuItem><controlsInputToolkit:MenuItem Header="将帐户转换为系统帐户" Click="ServiceAccount_Click"><controlsInputToolkit:MenuItem.Icon><矩形宽度=16"高度=16"填充={StaticResource ServiceAccountIcon}"/></controlsInputToolkit:MenuItem.Icon></controlsInputToolkit:MenuItem><controlsInputToolkit:Separator/>剪....

解决方案

问题/解决方法在这里描述

一个>

Using Silverlight5, RIA Services, DataPager for a 7500row query into a ListBox.

Got an interesting problem - after paging through 500 or so items, memory usage goes from 70MB to 250MB ish, and performance degrades horribly.

If I comment out ContextMenuService, it all works fine.

Problem: How to implement a performant right click functionality on each listboxitem?

<ListBox x:Name="AccountItems" SelectionMode="Extended" ItemsSource="{Binding Data, ElementName=AccountsDataSource}" ScrollViewer.HorizontalScrollBarVisibility="Disabled">

    <ListBox.ItemTemplate>
        <DataTemplate>
            <ListBoxItem>
                <TextBlock Grid.Column="2" Name="textBlockCaptionFirstName" Text="{Binding FirstName}" HorizontalAlignment="Left" TextAlignment="Center" TextWrapping="Wrap" >
                    <!-- Right click -->
                    <controlsInputToolkit:ContextMenuService.ContextMenu>
                        <controlsInputToolkit:ContextMenu>
                            <controlsInputToolkit:MenuItem Header="Convert account to another User" Click="Person_Click">
                                <controlsInputToolkit:MenuItem.Icon>
                                    <Rectangle Width="16" Height="16" Fill="{StaticResource PersonAccountIcon}"/>
                                </controlsInputToolkit:MenuItem.Icon>
                            </controlsInputToolkit:MenuItem>
                            <controlsInputToolkit:MenuItem Header="Convert account to a System account" Click="ServiceAccount_Click">
                                <controlsInputToolkit:MenuItem.Icon>
                                    <Rectangle Width="16" Height="16" Fill="{StaticResource ServiceAccountIcon}"/>
                                </controlsInputToolkit:MenuItem.Icon>
                            </controlsInputToolkit:MenuItem>

                            <controlsInputToolkit:Separator/> snip....

解决方案

Problem/workaround is described here

这篇关于性能 - ListBox 中的 Silverlight ContextMenuService的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆