Semi-transparent custom layout panel

2020-02-14 20:16发布

问题:

I have built a semi-transparent custom layout panel in WPF by setting the Opacity value of the panel to 0.5. Everything works as expected, except that the children of the panel are also semi-transparent!

What do I need to change to have the children of the panel rendered without transparency?

Here's the relevant code:

public class DialogLayoutPanelControl : Panel
{
    public DialogLayoutPanelControl() : base()
    {
        Background = Brushes.LightGray;
        Opacity = 0.5;
    }
 }

Solution (by Anvaka):

    Background = new SolidColorBrush(Colors.LightGray) { Opacity = 0.5 };

回答1:

Change the opacity of the brush, rather than control itself...



回答2:

Thank you very much Anvaka, you helped me also. In my case, I did it from XAML (from style):

   <Setter Property="Background">
        <Setter.Value>
            <SolidColorBrush Color="Black" Opacity="0.3"/>
        </Setter.Value>
    </Setter>