当我多次打开同一个窗口时,最后一个窗口变为'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;
//...
}
}
答案 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>
然后你可以在后面的代码中使用它。