在WPF中,我创建了一个为我动态创建按钮的控件。在某些情况下,按钮可能会更改,需要重新创建。我目前使用下列内容:如果链接到事件的控件被删除,事件处理程序是否从内存中移除?
public void GenerateButtons()
{
WrapPanel_Main.Children.Clear();
foreach (ActivatedItem thisItem in Controller.ItemList.Where(sl => sl.IsTypeCompatible(typeof(ActivatedItem))))
{
Button newButton = new Button() { Content = thisItem, ToolTip = thisItem.Desc, Width = 50, Height = 25 };
newButton.Click += new System.Windows.RoutedEventHandler(this.DynamicButtonClick);
WrapPanel_Main.Children.Add(newButton);
}
}
我还是想知道如果我的代码WrapPanel_Main.Children.Clear();
部分,就足以从内存中删除按钮和事件,如果我离开的东西(如事件处理程序)漂浮出来那里?
与往常一样,我也乐于接受有关改进上述代码的建议。
安东尼有你尝试添加/测试'WrapPanel_Main.Children。清除();'?如果是的话,它会产生什么结果..? – MethodMan
'WrapPanel_Main.Children.Clear();'代码从WrapPanel中删除了按钮,但我不确定它们是否被存储在别的地方,以及它是否删除了偶数处理程序,我不知道如何测试。我不知道事件处理程序幕后会发生什么'魔术'。 –
你可以做一个foreach循环来检查控件..?只是好奇.. – MethodMan