2015-08-19 3 views
0

настоящего времени у меня следующий код XAML:Полупрозрачный фона и непрозрачный передний план МОФ

<Grid 
    Name="rootGrid" 
    Opacity=".25" 
    Background="Black" 
    HorizontalAlignment="Stretch" 
    VerticalAlignment="Stretch"> 
    <Border 
     Background="Black" 
     Margin="120"> 
     <Grid 
      Background="White" 
      Margin="8"> 
      <TextBlock 
       Name="popupContent"> 
       Test 
      </TextBlock> 
      <Button 
       Click="Button_Click"> 
       Test 
      </Button> 
     </Grid> 
    </Border> 
</Grid> 

В настоящее время установка на GridOpacity распространяются также на своих детях.

Я хочу, чтобы эта непрозрачность была нанесена на цвет фона, чтобы добиться эффекта затемнения, а не на переднем плане. Как я могу это сделать?

ответ

5

Используйте полупрозрачный фон, либо как SolidColorBrush, как

<Grid ...> 
    <Grid.Background> 
     <SolidColorBrush Color="Black" Opacity="0.25"/> 
    </Grid.Background> 
    ... 
</Grid> 

или указав значение альфа в цвете, как

<Grid Background="#3F000000" ...> 
+0

У меня возникла идея, что «Grid.Background» может работать, но спасибо за предложение альфа-канала! – vrwim

-1

Непрозрачность всегда будет относиться к детям, поэтому я предпочитаю использовать холст на том же уровне для достижения этой цели влияют:

<Grid> 
    <Canvas Opacity=".25" 
     Background="Black"/> 
    <Grid Name="rootGrid" 
     HorizontalAlignment="Stretch" 
     VerticalAlignment="Stretch"> 
     <Border 
      Background="Black" 
      Margin="120"> 
      <Grid 
       Background="White" 
       Margin="8"> 
       <TextBlock 
        Name="popupContent"> 
        Test 
       </TextBlock> 
       <Button 
        Click="Button_Click"> 
        Test 
       </Button> 
      </Grid> 
     </Border> 
    </Grid> 
</Grid> 
0

Хитрость заключается в том, чтобы не добавлять Opacity ко всему Grid элемента:

<Grid> 
    <Grid.Background> 
     <SolidColorBrush Color="Black" Opacity=".75"/> 
    </Grid.Background> 
    <!--(Other elements)--> 
</Grid> 
0

Это работал для меня. У меня есть две сетки сетки Root и подсетей RootContent. Я контролирую непрозрачность RootContent. Любые элементы управления в «Корне» не будут выполняться.

<Grid x:Name="Root" KeyDown="Root_KeyDown" Tapped="Root_Tapped"> 
     <!--(Other elements)--> 
    <Grid x:Name="RootContent"> 
      <!--(Other elements)--> 
    </Grid> 
</Grid> 
Смежные вопросы