c# - tutorial - Ventana WPF con fondo transparente que contiene controles opacos
wpf tutorial español (3)
Esta pregunta ya tiene una respuesta aquí:
Tengo una ventana con la siguiente apariencia:
Lo que me gustaría, sin embargo, es si el Button
controla (los grises con el texto en el medio) en la Grid
principal de la Window
tenía una opacidad de 1, totalmente opaco. Como heredé este proyecto, la opacidad se estableció en 0.75 en el nivel superior, dentro de la etiqueta de Window
apertura. Ahora, como entiendo, esto aplicará automáticamente eso en todos los niños y que dichos niños no pueden anular.
¿Cómo puedo lograr el fondo transparente pero los botones opacos? La única forma que he encontrado hasta ahora (como un principiante relativo en WPF) es tener dos Windows separados, uno que es el fondo transparente, y el otro no tiene fondo pero contiene los controles opacos. Aunque esto es terriblemente hacky y quiero evitarlo si puedo.
Puedo suministrar el código si se solicita, pero es realmente tan simple como una Window
con windowstyle = none y opacity .75 que contiene una Grid
, que contiene algunos controles muy básicos de Button
etc.
¿Alguien ha construido una Window
o ha tenido alguna idea de cómo generarla? Gracias.
El efecto anterior también se puede lograr configurando la Opacidad del diseñador de 100% a 60% (según se requiera).
En lugar de establecer la opacidad de la ventana, establezca la opacidad de su fondo:
<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>
Si creas un estilo como este:
<Window.Resources>
<Style TargetType="Button" x:Key="WindowButtons">
<Setter Property="Opacity" Value="1"/>
</Style>
</Window.Resources>
Luego puede hacer referencia a los que están en XAML para su botón de esta manera:
<Button Style="{StaticResource WindowButtons}">Tony</Button>
Y ya no debería heredar su opacidad de su padre.