Frage

In WPF innerhalb XAML wie ein Control als solche erstrecken, dass, wenn auf eine Taste angewendet, und die Taste deaktiviert wird sie auf 0,5 Opazität schwindet, während deaktiviert und wieder zurück Blendungen bis 1,0 Opazität aktiviert.

Dieser visuelle Effekt sollte auch funktionieren, wenn ein Elternteil deaktiviert wird.

War es hilfreich?

Lösung

Sie brauchen keine Control dafür. Sie erreichen dies mit nur Stile. Die folgende Schaltfläche Stil wird auf alle Tasten angewendet. Er setzt Opazität auf 0,5, wenn IsEnabled wahr ist, und gibt sie automatisch auf 1, wenn die Triggerbedingung nicht mehr gilt. Wenn Sie die Control in einem Stil anwenden möchten, können Sie diesen Trigger zu, dass man hinzufügen. Es funktioniert auch, wenn die Eltern sind deaktiviert, da IsEnabled vererbt wird.

<Window.Resources>
    <Style TargetType="{x:Type Button}">
        <Style.Triggers>
            <Trigger Property="Control.IsEnabled" Value="false">
                <Setter Property="Control.Opacity" Value="0.5" />
            </Trigger>
        </Style.Triggers>
    </Style>
</Window.Resources>

Oder haben Sie speziell eine Control Lösung erfordern?

Aktualisieren

Ich glaube nicht, Template Converter unterstützt so, wenn Sie dies in Control Sie so etwas wie die folgende verbindliche Aussage hoch genug, um in der logischen Struktur verwenden, müssen tun wollen.

Opacity={Binding Path=IsEnabled, 
         RelativeSource={RelativeSource TemplatedParent}, 
         Converter={StaticResource BoolToDoubleConverter}}

Wo BoolToDoubleConverter ein IValueConverter ist, die 1 für wahr und 0,5 für false zurückgibt. Ich würde immer noch den Stil Ansatz empfehlen, wenn Sie Stile verwenden können. Viel einfacher glaube ich.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top