我正在使用infragistics TabGroupPane。在这种情况下,当ContentPane处于活动状态时,我正在使用用户控件并删除以前活动的选项卡内容。 这是我的代码Xaml:
<igDock:DocumentContentHost>
<igDock:SplitPane>
<igDock:TabGroupPane x:Name="tabMainMenu" SelectionChanged="xamMainTab_SelectionChanged" AllowDrop="False">
<igDock:ContentPane x:Name="tabItem1" Header="Item 1"></igDock:ContentPane>
<igDock:ContentPane x:Name="tabItem2" Header="Item 2"></igDock:ContentPane>
<igDock:ContentPane x:Name="tabItem3" Header="Item 3"></igDock:ContentPane>
<igDock:ContentPane x:Name="tabItem4" Header="Item 4"></igDock:ContentPane>
<igDock:ContentPane x:Name="tabItem5" Header="Item 5"></igDock:ContentPane>
</igDock:TabGroupPane>
</igDock:SplitPane>
</igDock:DocumentContentHost>
和代码behide side
private void xamMainTab_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e)
{
if (e.RemovedItems.Count > 0 && null != e.RemovedItems[0] as ContentPane)
{
(e.RemovedItems[0] as ContentPane).Content = null;
}
GC.Collect();
ContentPane selectedTab = this.tabMainMenu.SelectedItem as ContentPane;
BindContainer(selectedTab.Name);
}
private void BindContainer(string item)
{
switch (item)
{
case "tabItem1":
this.tabItem1.Content = new UserControls.UserControl1();
this.tabMainMenu.SelectedItem = this.tabItem1;
break;
case "tabItem2":
this.tabItem2.Content = new UserControls.UserControl2();
this.tabMainMenu.SelectedItem = this.tabItem2;
break;
case "tabItem3":
this.tabItem3.Content = new UserControls.UserControl3();
this.tabMainMenu.SelectedItem = this.tabItem3;
break;
case "tabItem4":
this.tabItem4.Content = new UserControls.UserControl4();
this.tabMainMenu.SelectedItem = this.tabItem4;
break;
case "tabItem5":
this.tabItem5.Content = new UserControls.UserControl5();
this.tabMainMenu.SelectedItem = this.tabItem5;
break;
default:
this.tabItem1.Content = new UserControls.UserControl1();
this.tabMainMenu.SelectedItem = this.tabItem1;
break;
}
}
这里我将最后一项的内容设置为null。(e.RemovedItems [0] as ContentPane).Content = null; 但在那种情况下,内存(大小)不会释放。然后我使用GC.Collect,这次有些内存是免费的。 这是写空闲内存或任何其他方式的方式然后请提供给我任何参考。并且在这种情况下,当我的用户控件包含WebBrowser时,如果我使用GC.collect内存不会释放,请指导我这一点。< / p>
由于