If you set a parent window’s Opacity, any child windows can only have an opacity equal to or below the parent window’s. So if you want to keep the main window background transparent but leave the child controls (such as a text box) fully opaque, it will not work as you expect. One solution (there are possibly others too) is to do the following.
Set the main window’s AllowTransparency to true and set the Background to Transparent.
<Window . . .
AllowsTransparency="True" Background="Transparent"
>
Now say you main panel is a grid, put a Border control on it as follows :
<Border Opacity="0.9" . . .>
<Border.Background>
. . .
</Border.Background>
</Border>
Set the border’s background to what you originally wanted the main window’s background to be. Now you’ll find a transparent window background where your editable controls can still retain 100% opacity.
Warning : Setting AllowTransparency to true on the main window potentially results in some very bad performance issues on both XP and Vista since WPF switches to software rendering (in my experience, even with good video cards). Once that happens, animations and video can get pretty unusably slow.