在WPF C#中关闭窗口

时间:2019-02-27 10:58:12

标签: c# wpf xaml material-design-in-xaml

我想关闭当前显示的窗口。 但是,当我调用Close()时,它仅隐藏窗口。 并且内存长度仍然增加而不是减少。

我也使用此答案来解决此问题:

https://stackoverflow.com/a/34651426/9135351

但它不起作用。

这是我的代码,用于显示一个新窗口并关闭显示的窗口

C#

private void Home_Click(object sender, RoutedEventArgs e)
{
   new HomeContentView().Show(); //Open Home window
   Close(); //Close current window
   GC.Collect(); //Realease
}

Xaml

 <Button
     ToolTip="Home"
     Click="Home_Click"
     Cursor="Hand"
     Background="Transparent"
     BorderBrush="Transparent"
     Margin="0,0,221,0"
     HorizontalAlignment="Right"
     Width="48" Height="48"
     VerticalAlignment="Top">

     <materialDesign:PackIcon Kind="Home" Width="37" Height="38" 
     Foreground="Black" HorizontalAlignment="Stretch" />
 </Button>

2 个答案:

答案 0 :(得分:1)

Close()应该可以解决问题。为什么不能使用为WindowClose创建的对象,而不是从Application.Current.Windows

访问对象
var window = new HomeContentView(); 
window.Show(); // Shows window
window.Close(); // Closes window

答案 1 :(得分:0)

public void MyMethod()
    {
        var myWindow = this;
        var control = myWindow.Content;
        //do stuff
        control = null; // is that okay??
        myWindow.Close();
    }