2014-01-30 3 views
36

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

enter image description here

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

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

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

Неужели кто-нибудь построил такой Window раньше или иным образом понимал его? Благодарю.

ответ

76

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

<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> 
+0

Спасибо вам большое. Я пробовал так много вещей, и я не могу поверить, что все было так просто. – kmarks2

+0

@svinja, Как мы можем добиться такого же эффекта для пользовательского элемента управления WPF, который размещается в форме выигрыша. – RSB

+0

@RSB установите кисть фона элемента управления на прозрачный или нулевой – Gusdor

1

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

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

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

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

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

0

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

Смежные вопросы