Подтвердить что ты не робот

Окно WPF с прозрачным фоном, содержащим непрозрачные элементы управления

У меня есть окно со следующим внешним видом:

enter image description here

Я бы хотел, однако, если элементы управления Button (серые с текстом в середине) в Window main Grid имели непрозрачность 1, полностью непрозрачную. Когда я унаследовал этот проект, непрозрачность была установлена ​​на 0.75 на верхнем уровне, внутри открытого тега Window. Теперь, поскольку я понимаю, что это автоматически обеспечит это для всех детей и что указанные дети не могут переопределить.

Как тогда я могу выполнить прозрачный фон, но непрозрачные кнопки? Единственный способ, который я нашел до сих пор (как относительный новичок в WPF), состоит в том, чтобы иметь две отдельные Windows, одну из которых является прозрачным фоном, а другая не имеет фона, но содержит непрозрачные элементы управления. Это ужасно хакерское, хотя я хочу избежать этого, если смогу.

Я могу предоставить код по запросу, но это действительно так же просто, как Window с помощью windowstyle = none и opacity.75, содержащего Grid, который содержит некоторые очень простые элементы управления Button и т.д.

Кто-нибудь построил такой Window раньше или иначе понял, как его создать? Спасибо.

4b9b3361

Ответ 1

Вместо того, чтобы установить непрозрачность окна, установите его непрозрачность фона:

<Window x:Class="WpfApplication3.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525"
        AllowsTransparency="True" WindowStyle="None">
    <Window.Background>
        <SolidColorBrush Opacity="0.5" Color="White"/>
    </Window.Background>
    <Grid>
        <Button Width="200" Height="50">button</Button>
    </Grid>
</Window>

Ответ 2

Если вы создаете такой стиль:

<Window.Resources>
    <Style TargetType="Button" x:Key="WindowButtons">
        <Setter Property="Opacity" Value="1"/>           
    </Style>
</Window.Resources>

Затем вы можете ссылаться на тех, кто находится в XAML для вашей кнопки, как это:

<Button Style="{StaticResource WindowButtons}">Tony</Button>

И он больше не должен наследовать его непрозрачность от своего родителя.

Ответ 3

Выше эффект также может быть достигнут путем установки Opacity от дизайнера от 100% до 60% (по мере необходимости).