Laden...

Mit Checkboxen Opacity eines Controls via DependencyProperty setzen

Erstellt von ByteDevil vor 4 Jahren Letzter Beitrag vor 4 Jahren 912 Views
ByteDevil Themenstarter:in
132 Beiträge seit 2013
vor 4 Jahren
Mit Checkboxen Opacity eines Controls via DependencyProperty setzen

Hi,

ich möchte die Opacity von einem control abhängig von 2 unterschiedlichen DependencyProperties auf unterschiedliche Werte setzen. Das soll animiert geschehen.
Hier mal mein Versuch:


<StackPanel>
     <CheckBox x:Name="ChkBoxA" Content="A"/>
     <CheckBox x:Name="ChkBoxB" Content="B"/>
</StackPanel>

.
.
.


<ListBox>
    <ListBox.Style>
        <Style TargetType="{x:Type ListBox}">
            <Style.Triggers>
                <MultiDataTrigger>
                    <MultiDataTrigger.Conditions>
                        <Condition Binding="{Binding ElementName=ChkBoxA, Path=IsChecked}" Value="true"/>
                        <Condition Binding="{Binding ElementName=ChkBoxB, Path=IsChecked}" Value="true"/>
                    </MultiDataTrigger.Conditions>
                    <MultiDataTrigger.EnterActions>
                        <BeginStoryboard>
                            <Storyboard>
                                <DoubleAnimation Storyboard.TargetProperty="Opacity" To="1.0" Duration="0:0:0.2"/>
                            </Storyboard>
                        </BeginStoryboard>
                    </MultiDataTrigger.EnterActions>
                </MultiDataTrigger>
                <MultiDataTrigger>
                    <MultiDataTrigger.Conditions>
                        <Condition Binding="{Binding ElementName=ChkBoxA, Path=IsChecked}" Value="false"/>
                        <Condition Binding="{Binding ElementName=ChkBoxB, Path=IsChecked}" Value="false"/>
                    </MultiDataTrigger.Conditions>
                    <MultiDataTrigger.EnterActions>
                        <BeginStoryboard>
                            <Storyboard>
                                <DoubleAnimation Storyboard.TargetProperty="Opacity" To="0.1" Duration="0:0:0.2"/>
                            </Storyboard>
                        </BeginStoryboard>
                    </MultiDataTrigger.EnterActions>
                </MultiDataTrigger>
                <MultiDataTrigger>
                    <MultiDataTrigger.Conditions>
                        <Condition Binding="{Binding ElementName=ChkBoxA, Path=IsChecked}" Value="true"/>
                        <Condition Binding="{Binding ElementName=ChkBoxB, Path=IsChecked}" Value="false"/>
                    </MultiDataTrigger.Conditions>
                    <MultiDataTrigger.EnterActions>
                        <BeginStoryboard>
                            <Storyboard>
                                <DoubleAnimation Storyboard.TargetProperty="Opacity" To="0.3" Duration="0:0:0.2"/>
                            </Storyboard>
                        </BeginStoryboard>
                    </MultiDataTrigger.EnterActions>
                </MultiDataTrigger>
            </Style.Triggers>
        </Style>
    </ListBox.Style>
</ListBox>

Is jetzt eine ListBox, lässt sich aber auch mit anderen UIElementen reproduzieren. Starte ich das Programm, springt die Opacity auf 0.1 ... soweit richtig. Checke ich nun Checkbox A, geht die Opacity auf 0.3 ... auch richtig. Klicke ich beide an, passiert nichts...es bleibt auf 0.3, müsste aber auf 1.0 gehen. Was mache ich falsch?