这是我的代码:
var windows = Application.Current.Windows;
var backgroundWindow = windows[windows.Count - 1];
backgroundWindow.Background = Brushes.White;
backgroundWindow.Opacity = 0.5;
SpecialLettersLayout layout = new SpecialLettersLayout((SmartButton)button, KeyboardViewModel);
layout.Show();
当我打开一个新窗口时,我想要旧窗口(背景中的那个窗口的不透明度为0.5。当我运行应用程序时,这里是我得到的:
如你所见,背景有点灰色。如何用白色替换灰色?
答案 0 :(得分:1)
将Window.Background
设置为Opacity
时,0.5
变为灰色,因为Window
的实际背景为Black
。您可以通过设置以下内容来验证这一点:
backgroundWindow.Background = Brushes.Transparent;
不是将Window.Opacity
设置为0.5
,而是将任何容器控件的Opacity
设置为0.5
,以便您不制作White Window.Background
不透明,但使容器变得不透明,留下White Window.Background
:
<Window ...>
<Grid>
<Rectangle Fill="White" Opacity="0.5" />
<!-- Your main content -->
</Grid>
</Window>
答案 1 :(得分:1)
解决我的问题的原因是:
AllowsTransparency="True"
在我的窗口中@Sheridan是对的,当我设置:
backgroundWindow.Background = Brushes.Transparent;
我有黑色背景。我不知道为什么,我从未将任何窗户的背景设置为黑色。