WPF DataGrid 无法被释放?
遇到奇怪的现象,只要在界面里加入DataGrid控件,界面内存实例就无法释放,举个例子:
在界面 MainWindow 里弹出一个新窗体 Window1:
1.首先,新窗体Window1里啥控件都不放,默认的如下:
弹出界面并关闭,操作数次之后,内存里是没有Window1这个实例的:

2.其次,我在Window1里加一个默认的DataGrid:
弹出Window1界面并关闭,操作数次,最终关闭Window1界面,内存里始终是有Window1这个实例的:

真的是服了,总是遇到这些奇葩情况,为什么呢?是不是这种弹出窗体做法不对?我手动释放 ,调用GC回收也不行:
请高人指点
在界面 MainWindow 里弹出一个新窗体 Window1:
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WpfApplication1"
mc:Ignorable="d"
Title="MainWindow" Height="350" Width="525" >
<Grid>
<Button x:Name="button" Content="Button" HorizontalAlignment="Left" Margin="215,137,0,0" Click="button_Click"
VerticalAlignment="Top" Width="75"/>
</Grid>
</Window>
private void button_Click(object sender, RoutedEventArgs e)
{
Window1 w1 = new Window1();
w1.ShowDialog();
}
1.首先,新窗体Window1里啥控件都不放,默认的如下:
<Window x:Class="WpfApplication1.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WpfApplication1"
mc:Ignorable="d"
Title="Window1" Height="300" Width="300">
<Grid>
</Grid>
</Window>
弹出界面并关闭,操作数次之后,内存里是没有Window1这个实例的:

2.其次,我在Window1里加一个默认的DataGrid:
<Window x:Class="WpfApplication1.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WpfApplication1"
mc:Ignorable="d"
Title="Window1" Height="300" Width="300">
<Grid>
<DataGrid Width="200" Height="200" Background="Brown">
</DataGrid>
</Grid>
</Window>
弹出Window1界面并关闭,操作数次,最终关闭Window1界面,内存里始终是有Window1这个实例的:

真的是服了,总是遇到这些奇葩情况,为什么呢?是不是这种弹出窗体做法不对?我手动释放 ,调用GC回收也不行:
private void button_Click(object sender, RoutedEventArgs e)
{
Window1 w1 = new Window1();
w1.ShowDialog();
w1 = null;
GC.Collect();
GC.WaitForPendingFinalizers();
GC.Collect();
}
请高人指点

...全文
相关推荐
WPF分页DataGrid
该项目实现了一个支持分页功能的WPF DataGrid自定义控件,具备首页、尾页、上下页导航及页面大小设置等功能。通过DataPager和PagingDataGrid组件协同工作,结合依赖属性与模板化
WPF动态添加行列DATAGRID
本文将深入探讨如何在WPF中实现DataGrid的动态添加行列功能。首先,我们需要理解DataGrid的基本用法。
wpf中DataGrid数据双向绑定
在这个特定的场景中,“wpf中DataGrid数据双向绑定”指的是如何配置DataGrid以便在用户界面(UI)上的操作能够即时更新后端数据,并且当后端数据发生变化时,UI也会相应地更新。
WPF DataGrid合并单元格(模板列嵌套DataGrid)
总的来说,实现WPF DataGrid的单元格合并和模板列嵌套DataGrid,需要深入理解DataGrid控件的工作原理,以及WPF的数据绑定和样式系统。
wpf通过datagrid操作数据库,实现datagrid增删改操作。
DataGrid是WPF中的一个强大控件,它允许用户以表格的形式展示和编辑数据,非常适合用于数据密集型应用程序。首先,我们需要了解WPF的基本架构。


