none
想实现list veiw的数据虚拟化,感觉没用,加载数据的时候内存还是一直涨 RRS feed

  • 问题

  • 代码如下

     <Style x:Key="ListViewStyleMessageDoc" TargetType="{x:Type ListView}">
                <Setter Property="Background" Value="{DynamicResource {x:Static SystemColors.WindowBrushKey}}"/>
                <Setter Property="BorderBrush" Value="{StaticResource ListBorder}"/>
                <Setter Property="BorderThickness" Value="0"/>
                <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/>
                <Setter Property="ScrollViewer.HorizontalScrollBarVisibility" Value="Auto"/>
                <Setter Property="ScrollViewer.VerticalScrollBarVisibility" Value="Auto"/>
                <Setter Property="ScrollViewer.CanContentScroll" Value="true"/>
                <Setter Property="VerticalContentAlignment" Value="Center"/>
                <Setter Property="VirtualizingStackPanel.IsVirtualizing" Value="True"/>
                <Setter Property="VirtualizingStackPanel.VirtualizationMode" Value="Recycling"></Setter>
                <Setter Property="ItemsPanel">
                    <Setter.Value>
                        <ItemsPanelTemplate>
                            <VirtualizingStackPanel />
                        </ItemsPanelTemplate>
                    </Setter.Value>
                </Setter>
                <Setter Property="Template">
                    <Setter.Value>
                        <ControlTemplate TargetType="{x:Type ListView}">
                            <Border x:Name="Bd" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" Padding="0" SnapsToDevicePixels="true">
                                <ScrollViewer Focusable="false" Padding="{TemplateBinding Padding}" ScrollChanged="ScrollViewer_LVMessageDocScrollChanged" Style="{StaticResource WD_ScrollViewer}">
                                    <ItemsPresenter SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/>
                                </ScrollViewer>
                            </Border>
                            <ControlTemplate.Triggers>
                                <Trigger Property="IsEnabled" Value="false">
                                    <Setter Property="Background" TargetName="Bd" Value="{DynamicResource {x:Static SystemColors.ControlBrushKey}}"/>
                                </Trigger>
                                <Trigger Property="IsGrouping" Value="true">
                                    <Setter Property="ScrollViewer.CanContentScroll" Value="True"/>
                                </Trigger>
                            </ControlTemplate.Triggers>
                        </ControlTemplate>
                    </Setter.Value>
                </Setter>
            </Style>

    求解啊

    2016年9月1日 2:56

答案

  • 您好 wpf萌新,

    内存爆掉的原因是该释放的资源没有被及时的释放掉。请问您是使用什么方法来发送消息的? 这些发送消息的对象通常都会使用非托管资源,这些资源需要在使用完毕后调用Dispose方法来释放。

    Best Regards,
    Li Wang


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    2016年9月4日 7:28
  • 用ANTS Performance Profiler探测下程序的内存使用,看下是哪些代码导致内存问题。

    我以前遇到的是Bitmap位图资源没有释放导致的

    using(Bitmap bmp=...)

    {

    }


    专注于.NET ERP/CRM开发框架,C/S架构,SQL Server + ORM(LLBL Gen Pro) + Infragistics WinForms

    2016年9月5日 1:27

全部回复

  • 什么事占位符,不懂,我是在做一个聊天工具,跟qq差不多,消息发多了内存就爆掉
    2016年9月2日 3:05
  • 您好 wpf萌新,

    内存爆掉的原因是该释放的资源没有被及时的释放掉。请问您是使用什么方法来发送消息的? 这些发送消息的对象通常都会使用非托管资源,这些资源需要在使用完毕后调用Dispose方法来释放。

    Best Regards,
    Li Wang


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    2016年9月4日 7:28
  • 用ANTS Performance Profiler探测下程序的内存使用,看下是哪些代码导致内存问题。

    我以前遇到的是Bitmap位图资源没有释放导致的

    using(Bitmap bmp=...)

    {

    }


    专注于.NET ERP/CRM开发框架,C/S架构,SQL Server + ORM(LLBL Gen Pro) + Infragistics WinForms

    2016年9月5日 1:27