多次打开同一窗口并使用当前窗口实例时,抛出空引用异常

时间:2014-09-24 20:19:05

标签: wpf

当我多次打开同一个窗口时,最后一个窗口变为'Current.MainWindow',而对于其他窗口,这个'Current'实例变为null。当我试图实例化它时,它会抛出空引用异常。在每个窗口,我有一个按钮,它将隐藏/显示该窗口内的所有控件+更改它的不透明度。也许有另一种方法可以做到这一点,或者不是使用Current.MainWindow实例使用别的东西?

将改变窗口不透明度的方法:

private void btnHideShow_Click(object sender, RoutedEventArgs e)
{
    if (this._hide)
    {
        Application.Current.MainWindow.Background.Opacity = 0;
        this._hide = false;
        //...
    }
    else 
    {
        Application.Current.MainWindow.Background.Opacity = 0.1;
        this._hide = true;
        //...
    }
}

1 个答案:

答案 0 :(得分:1)

如果该代码是窗口背后的代码,您只需执行以下操作:

private void btnHideShow_Click(object sender, RoutedEventArgs e)
{
    if (this._hide)
    {
        this.Background.Opacity = 0;
        this._hide = false;
        //...
    }
    else 
    {
        this.Background.Opacity = 0.1;
        this._hide = true;
        //...
    }
}

您也可以使用x:Name attr:

为控件命名
<Grid x:Name="LayoutRoot"></Grid>

然后你可以在后面的代码中使用它。