我開發了一個具有數據網格的應用程序,它具有不同的列標題和行的上下文菜單。現在在頭文件上下文菜單中有一個我有過濾數據網格列。代碼片段如下。WPF數據網格中的內存泄漏問題
<DataGrid Padding="3" BorderBrush="SkyBlue" BorderThickness="1" ItemsSource="{Binding Source={StaticResource cvsCoreData}}" SelectionUnit="FullRow" IsReadOnly="True" AutoGenerateColumns="False" x:Name="Data" Margin="0,5,0,28">
<DataGrid.Resources>
<ContextMenu x:Key="DataGridColumnHeaderContextMenu" >
<MenuItem Header="ABC" Click="ABC_Click" />
<MenuItem Header="EFG" Click="EFG_Click" />
<MenuItem Header="HIJ" Click="HIJ_Click" />
<MenuItem Header="KLM" Click="KLM_Click" />
</ContextMenu>
</DataGrid.Resources>
<DataGrid.RowStyle>
<Style TargetType="{x:Type DataGridRow}">
<Style.Triggers>
<Trigger Property="IsSelected" Value="True" >
<Setter Property="Background" Value="SkyBlue" />
<Setter Property="Foreground" Value="Black"/>
</Trigger>
</Style.Triggers>
<Setter Property="ContextMenu"
Value="{StaticResource DataGridColumnHeaderContextMenu}" />
</Style>
</DataGrid.RowStyle>
<DataGrid.Columns>
<DataGridTemplateColumn SortMemberPath="Key" Width="*" Header="Key ">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock x:Name="block" TextWrapping="Wrap" Text="{Binding Key}">
</TextBlock>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTextColumn Width="*" Header="Lerm Description" Binding="{Binding KeyDescription}" />
<DataGridTextColumn Width="*" Header="Short " Binding="{Binding Short}" />
<DataGridTextColumn Width="*" Header="Rule" Binding="{Binding Rules}" />
</DataGrid.Columns>
<DataGrid.ContextMenu>
<ContextMenu>
<MenuItem x:Name="ContextKey" IsCheckable="True" IsChecked="True" Header="Key" Unchecked="ContextMenu_Unchecked" Checked="ContextMenu_Checked" Tag="0" />
<MenuItem x:Name="ContextLermDescription" IsCheckable="True" IsChecked="True" Header="Key" Unchecked="ContextMenu_Unchecked" Checked="ContextMenu_Checked" Tag="1" />
<MenuItem x:Name="ContextShor" IsCheckable="True" IsChecked="True" Header="Short" Unchecked="ContextMenu_Unchecked" Checked="ContextMenu_Checked" Tag="2" />
<MenuItem x:Name="ContextRule" IsCheckable="True" IsChecked="True" Header="Rules" Unchecked="ContextMenu_Unchecked" Checked="ContextMenu_Checked" Tag="3" />
</ContextMenu>
</DataGrid.ContextMenu>
</DataGrid>
現在,當頭部上下文菜單未選中時,特定列將被隱藏,反之亦然。它工作正常,但是當我想隱藏最後一列時,我需要大約5秒,並分配大量內存。隱藏數據網格中的所有列後,首先顯示可見的列時,會發生同樣的情況。爲什麼這內存泄漏正在發生。
你使用什麼.net框架? 3.5或4.0或... – blindmeis 2014-08-27 09:20:48
我使用.NET 4.5框架。 – 2014-08-27 09:22:35
以及我有一個與DataGridTemplateColumn類似的問題。 (http://wpf.codeplex.com/discussions/400881),但這是用4.5解決的 – blindmeis 2014-08-27 09:24:14