我生成一个ContentControls的动态recursiv结构。
<ContentControl
x:Class="MyContentControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d">
<StackPanel>
<ItemsControl x:Name="ChildPanel"/>
<Button x:Name="Remove" Content="Remove"></Button>
</StackPanel>
</ContentControl>
ChildControl
在后面的代码中填充了许多ContentControl
个。如果我从ChildControl
删除其中一个项目,则垃圾收集器不会删除已删除的ContentControl
。
我是否必须在其他地方释放该物品?
public partial class MyContentControl : ContentControl
{
public MyContentControl() : this(false)
{
}
public MyContentControl(bool lastItem)
{
InitializeComponent();
if (!lastItem)
{
ChildPanel.Items.Add(new MyContentControl(true));
}
Remove.Click += Remove_Click;
}
private void Remove_Click(object sender, RoutedEventArgs e)
{
while(ChildPanel.Items.Count > 0)
{
((MyContentControl)ChildPanel.Items[0]).Remove.Click -= Remove_Click;
ChildPanel.Items.RemoveAt(0);
}
}
}