不透明时背景变灰

时间:2014-09-17 13:08:26

标签: wpf xaml background opacity

这是我的代码:

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。当我运行应用程序时,这里是我得到的:

enter image description here

如你所见,背景有点灰色。如何用白色替换灰色?

2 个答案:

答案 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;

我有黑色背景。我不知道为什么,我从未将任何窗户的背景设置为黑色。