WPF - изменение непрозрачности внешнего управления не изменит непрозрачность внутреннего контроля - PullRequest
0 голосов
/ 20 апреля 2020

У меня есть border1 с полным экраном, и это фон # 011627. Сетка разбивается на четыре части, одна из них имеет border2, и ее фон равен # 0b192a.

 <Border x:Name="border1" Background="#011627"/>
 <Grid>
     <Grid.RowDefinitions>
         <RowDefinition Height="*"/>
         <RowDefinition Height="*"/>
     </Grid.RowDefinitions>
     <Grid.ColumnDefinitions>
         <ColumnDefinition Width="*"/>
         <ColumnDefinition Width="*"/>
     </Grid.ColumnDefinitions>
     <TextBlock Grid.Row="1" Text="Test" Foreground="White" FontSize="30"/>
     <Border x:Name="border2" Background="#0b192a"/>
 </Grid>

enter image description here

Теперь я хочу установить непрозрачность сетки до 0,1 и влияет на непрозрачность текста, и не влияет на фон border2.

Но это не соответствует моим ожиданиям.

 <Border x:Name="border1" Background="#011627"/>
 <Grid Opacity="0.1">
     <Grid.RowDefinitions>
         <RowDefinition Height="*"/>
         <RowDefinition Height="*"/>
     </Grid.RowDefinitions>
     <Grid.ColumnDefinitions>
         <ColumnDefinition Width="*"/>
         <ColumnDefinition Width="*"/>
     </Grid.ColumnDefinitions>
     <TextBlock Grid.Row="1" Text="Test" Foreground="White" FontSize="30"/>
     <Border x:Name="border2" Background="#0b192a"/>
 </Grid>

enter image description here

Может ли это случиться? Спасибо!

1 Ответ

1 голос
/ 20 апреля 2020

UIElement.Opacity по определению применяется ко всем дочерним элементам (под) дерева, где root - это элемент, который определяет значение.

Если вы хотите установить Opacity исключительно для определенного элемента c, вы должны установить его локально / Style для этого самого элемента:

<Grid>
  <TextBlock Opacity="0.1" Text="Test" />
  <Border x:Name="border2" />
</Grid>
...