从内存中删除从Grid中删除的按钮

时间:2012-05-14 10:56:15

标签: wpf memory button

在我的应用程序中,我在运行时生成多个按钮并将其添加到网格中,如下所示

 for (int i = 0; i < ListOfMainCategories.Count; i++)
            {
                clsMainCategory tempCat = (clsMainCategory)ListOfMainCategories[i];
                ButtonMainMenuCat btn = CreateMainButton(tempCat.CatTitle, i);
                btn.Margin = new Thickness(0, 1, 0, 1); 
                btn.TabIndex = TabIndexNo;
                if (i == 0)
                {
                    buttonHomeMenu = btn;
                }
                btn.AddHandler(ButtonMainMenuSubSubCat.GotKeyboardFocusEvent, new RoutedEventHandler(ButtonMainMenuGotFocus), handledEventsToo: false);
                // stackTableViewMainMenu.Children.Add(btn);
                Grid.SetRow(btn, 1);
                Grid.SetColumn(btn, i + 1);
                gridHeader.Children.Add(btn);

            }

在特定事件之后,我从Grid中删除了所有这些按钮。

gridHeader.Children.RemoveRange(0, gridHeader.Children.Count);

在这里我想我还需要从内存中删除或处理或卸载这些按钮。那我该怎么做呢?请建议

1 个答案:

答案 0 :(得分:1)

由于没有什么可以处理的,Yuo不能处理传统意义上的按钮。您正在处理托管代码。只要没有引用,垃圾收集器就会清除内存分配。在上面的代码中,您通过路由事件处理程序保留对按钮的引用,因此在从Grid中删除它之前调用btn.RemoveHandler

您可以在此处查看有关WeakEvent模式的MSDN指南:http://msdn.microsoft.com/en-us/library/aa970850