Wpf 使用telerik:RadGridView:内存泄漏

Wpf 使用telerik:RadGridView:内存泄漏,wpf,memory-leaks,telerik,telerik-grid,Wpf,Memory Leaks,Telerik,Telerik Grid,我有一个使用MVVM设计模式的WPF应用程序 在测试内存增长时,我遇到了内存泄漏。几天来我一直在努力修复,但都没有成功。如果可能的话,有人可以指出这个问题 <Grid> <Grid.RowDefinitions> <RowDefinition Height="5"></RowDefinition> <RowDefinition Height="*"></RowDefinition>

我有一个使用
MVVM
设计模式的WPF应用程序

在测试内存增长时,我遇到了内存泄漏。几天来我一直在努力修复,但都没有成功。如果可能的话,有人可以指出这个问题

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="5"></RowDefinition>
        <RowDefinition Height="*"></RowDefinition>
    </Grid.RowDefinitions>
    <!--Service Header Editable Data-->
    <StackPanel Grid.Row="0">
    </StackPanel>
    <telerik:RadGridView x:Name="grid"
                         IsReadOnly="{Binding IsServiceReadOnly}"
                         ItemsSource="{Binding DetailsModel.Collection}"
                         SelectedItem="{Binding SelectedCharge, Mode=TwoWay}"
                         CellEditEnded="grid_CellEditEnded"
                         AutoGenerateColumns="False"
                         ShowGroupPanel="False"
                         RowIndicatorVisibility="Collapsed"
                         ShowColumnFooters="True"
                         CanUserFreezeColumns="False"
                         behav:GridFoucsBehav.GridFocusPosition="{Binding GridViewChargesFocColPos, Mode=TwoWay}">
        <telerik:RadGridView.Columns>
            <telerik:GridViewDataColumn Header="{lp:Lp UI:ServiceCode}"
                                        DataMemberBinding="{Binding ServiceCode}">
                <telerik:GridViewDataColumn.AggregateFunctions>
                    <telerik:CountFunction Caption="c: " />
                </telerik:GridViewDataColumn.AggregateFunctions>
                <telerik:GridViewDataColumn.CellEditTemplate>
                    <DataTemplate>
                        <CustomControl:MyControl 
                                      SelectedIDPath="ID"
                                      SelectedID="{Binding ServiceID}"
                                      StringToSearch="{Binding ServiceCode}"
                                      SelectedItem="{Binding DataContext.SelectedService, Mode=TwoWay, RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type v:MyView}}}"
                                      ExprQueryByString="{Binding DataContext.ServiceExprQueryByString, RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type v:MyView}}}">
                            <CustomControl:Lookup.DisplayMemberPaths>
                                <s:String>code</s:String>
                            </CustomControl:Lookup.DisplayMemberPaths>
                            <CustomControl:Lookup.ColumnHeaders>
                                <s:String>Code</s:String>
                                <s:String>Description</s:String>
                            </CustomControl:Lookup.ColumnHeaders>
                        </CustomControl:MyControl>
                    </DataTemplate>
                </telerik:GridViewDataColumn.CellEditTemplate>
            </telerik:GridViewDataColumn>

            <telerik:GridViewDataColumn Header="{lp:Lp UI:ReceiptView_NumberOfUnit}"
                                        DataMemberBinding="{Binding NumberOfUnit}">
                <telerik:GridViewDataColumn.CellEditTemplate>
                    <DataTemplate>
                        <telerik:RadNumericUpDown Value="{Binding NumberOfUnit, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
                                                  UpdateValueEvent="PropertyChanged"
                                                  Minimum="0" />
                    </DataTemplate>
                </telerik:GridViewDataColumn.CellEditTemplate>
            </telerik:GridViewDataColumn>
            <telerik:GridViewDataColumn Header="{lp:Lp UI:Code}"
                                        DataMemberBinding="{Binding Code, Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}">
                <telerik:GridViewDataColumn.CellEditTemplate>
                    <DataTemplate>
                        <TextBox Text="{util:TwoWayBinding Code}" />
                    </DataTemplate>
                </telerik:GridViewDataColumn.CellEditTemplate>
            </telerik:GridViewDataColumn>
            <telerik:GridViewDataColumn Header="{lp:lp UI:Remarks}"
                                        DataMemberBinding="{Binding Remarks,Mode=TwoWay}">
                <telerik:GridViewDataColumn.CellEditTemplate>
                    <DataTemplate>
                        <TextBox Text="{Binding Remarks, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
                    </DataTemplate>
                </telerik:GridViewDataColumn.CellEditTemplate>
            </telerik:GridViewDataColumn>
        </telerik:RadGridView.Columns>
    </telerik:RadGridView>
</Grid>

密码
密码
描述
打开并关闭几个窗口后,内存会增长,对象仍挂在内存中

这是我的windows:

我的窗口 System.Windows.DataTemplate->MyApp.MyWindow->(System.Windows.Controls.Border,System.Windows.EffectiveValueEntry [],System.Windows.Threading.Dispatcher,…):12MB(11.23%)(3 对象,852字节(0.00%))以前的分配(最新到 最老的:11MB(11.22%)、740MB(7.19%)、740MB
(7.19%),

引用人:1200万(11.23%) 从System.Windows.DataTemplate System.Windows.EffectiveValueEntry []->System.Windows.DataTemplate->(MyWindow、System.Collections.Specialized.HybridDictionary、System.Windows.Threading.Dispatcher,…)

参考:668KB(0.64%) 到Telerik.Windows.Controls.RadTabControl MyWindow->Telerik.Windows.Controls.RadTabControl->(System.Windows.EffectiveValueEntry [],System.Windows.Style,System.Windows.Threading.Dispatcher,…)93 kB(0.09%) 至MyApp.ItemsNavigator MyApp.MyWindow->MyApp.ItemsNavigator->(System.Windows.Controls.DockPanel,System.Windows.Threading.Dispatcher,Telerik.Windows.Controls.RadTabItem,…) 24KB(0.02%) 到Telerik.Windows.Controls.RadContextMenu MyApp.MyWindow->Telerik.Windows.Controls.RadContextMenu->(System.Windows.Controls.ControlTemplate,System.Windows.EffectiveValueEntry [],System.Windows.Threading.Dispatcher,…) 2.8 kB(0.00%)至System.Windows.Controls.Border MyApp.MyWindow->System.Windows.Controls.Border->(MyApp.MyWindow,System.Windows.EffectiveValueEntry [],System.Windows.Threading.Dispatcher) 3.3MB(3.26%)到MyApp.LocalizedValidationPanel MyApp.MyWindow->MyApp.LocalizedValidationPanel->(System.Windows.Controls.ContentPresenter,System.Windows.Controls.Grid,System.Windows.Threading.Dispatcher,…) 3.0 MB(2.97%)到MyApp.ExRadGridView MyApp.MyWindow->MyApp.ExRadGridView->(System.Windows.EffectiveValueEntry [],System.Windows.Style,System.Windows.Threading.Dispatcher,…) 2.2 MB(2.14%)到Telerik.Windows.Controls.RadGridView MyApp.MyWindow->Telerik.Windows.Controls.RadGridView->(System.Windows.EffectiveValueEntry [],System.Windows.Style,System.Windows.Threading.Dispatcher,…) 1.1MB(1.06%)到MyApp.MenuItem MyApp.MyWindow->MyApp.MenuItem->(System.Windows.EffectiveValueEntry) [],System.Windows.Style,System.Windows.Threading.Dispatcher,…) 1.1 MB(1.04%)到System.Windows.EffectiveValueEntry[]MyApp.MyWindow->System.Windows.EffectiveValueEntry []->(System.Collections.Hashtable、System.Uri、System.Windows.EventHandlersStore,…)

我知道了。如果有帮助的话

Telerik.Windows.Controls.RadGridView System.Collections.Generic.Dictionary.Entry []->Telerik.Windows.Controls.RadGridView->(System.Windows.EffectiveValueEntry [],System.Windows.Style,System.Windows.Threading.Dispatcher,…):12 MB(100.00%)(3个对象,0.0字节(0.00%))

引用人:1200万(100.00%) 来自System.Collections.Generic.Dictionary.Entry []System.Collections.Generic.Dictionary->System.Collections.Generic.Dictionary.Entry []->(Telerik.Windows.Controls.RadGridView)

参考:12KB(0.10%) 转到System.Windows.EffectiveValueEntry []Telerik.Windows.Controls.RadGridView->System.Windows.EffectiveValueEntry []->(MS.Utility.FrugalMap、System.Boolean、System.Windows.EventHandlersStore等) 8.0 kB(0.07%)到Telerik.Windows.Data.DataItemCollection Telerik.Windows.Controls.RadGridView->Telerik.Windows.Data.DataItemCollection->(Telerik.Windows.Data.CompositeFilterDescriptorCollection,Telerik.Windows.Data.GroupDescriptorCollection,Telerik.Windows.Data.ObservableCollectionManagerCollection,…) 3.5 kB(0.03%)到System.Windows.Controls.Grid Telerik.Windows.Controls.RadGridView->System.Windows.Controls.Grid->(System.Windows.Controls.UIElementCollection,System.Windows.EffectiveValueEntry [],System.Windows.Threading.Dispatcher) 1.0 kB(0.01%)到Telerik.Windows.Controls.GridView.Selection.GridViewItemSelectionHandler Telerik.Windows.Controls.RadGridView->Telerik.Windows.Controls.GridView.SelectionHandler->(Telerik.Windows.Controls.RadGridView,Telerik.Windows.Data.DataItemCollection,Telerik.Windows.Data.Selection.InternalSelectionItemsStorage) 912字节(0.01%) 到Telerik.Windows.Controls.GridView.Selection.Selection拖动Telerik.Windows.Controls.RadGridView->Telerik.Windows.Controls.GridView.Selection.Selection->(Telerik.Windows.Controls.GridView.Scrolling.ScrollViewerCoordinator,Telerik.Windows.Controls.GridView.Selection.DefaultMouseInfo提供程序,Telerik.Windows.Controls.RadGridView) 564字节(0.00%) 到
 CellEditEnded="grid_CellEditEnded"