it-swarm.com.de

WPF-Fenster mit transparentem Hintergrund mit undurchsichtigen Steuerelementen

Ich habe ein Fenster mit folgendem Aussehen:

enter image description here

Was ich jedoch möchte, ist, wenn die Button-Steuerelemente (die grauen mit dem Text in der Mitte) im Window-Haupt Grid eine Opazität von 1 haben, völlig undurchsichtig. Als ich dieses Projekt erbte, wurde die Deckkraft auf der obersten Ebene im Window-Tag auf 0,75 gesetzt. Wenn ich jetzt verstehe, wird dies automatisch für alle Kinder gelten und die besagten Kinder können sie nicht überschreiben.

Wie kann ich dann den transparenten Hintergrund, aber undurchsichtige Schaltflächen, erreichen? Die einzige Möglichkeit, die ich bisher gefunden habe (als relativer Neuling in WPF), besteht darin, zwei separate Fenster zu haben, eines ist der transparente Hintergrund, und das andere hat keinen Hintergrund, enthält jedoch die undurchsichtigen Steuerelemente. Dies ist jedoch schrecklich hackig und ich möchte es vermeiden, wenn ich kann.

Ich kann den Code auf Anfrage bereitstellen, aber er ist wirklich so einfach wie ein Window mit windowstyle = none und Opazität .75, der ein Grid enthält, das einige grundlegende Button-Steuerelemente enthält.

Hat jemand so ein Window gebaut oder hat sonst einen Einblick in die Erstellung eines solchen? Vielen Dank.

44
kmarks2

Statt die Deckkraft des Fensters festzulegen, legen Sie die Deckkraft des Hintergrunds fest:

<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>
88
svinja

Wenn Sie einen Stil wie folgt erstellen:

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

Dann können Sie diese in der XAML für Ihre Schaltfläche wie folgt referenzieren:

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

Und es sollte nicht länger die Deckkraft von seinem übergeordneten Element erben.

1
TylerD87

Der obige Effekt kann auch erreicht werden, indem Sie die Deckkraft des Designers von 100% auf 60% einstellen (je nach Bedarf).

0
RSB