myCSharp.de - DIE C# und .NET Community (https://www.mycsharp.de/wbb2/index.php)
- Entwicklung (https://www.mycsharp.de/wbb2/board.php?boardid=3)
-- GUI: WPF und XAML (https://www.mycsharp.de/wbb2/board.php?boardid=85)
--- Mit Checkboxen Opacity eines Controls via DependencyProperty setzen (https://www.mycsharp.de/wbb2/thread.php?threadid=122566)


Geschrieben von ByteDevil am 23.01.2020 um 10:42:
  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:

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

.
.
.

XML-Code:
<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?


© Copyright 2003-2020 myCSharp.de-Team | Impressum | Datenschutz | Alle Rechte vorbehalten. | Dieses Portal verwendet zum korrekten Betrieb Cookies. 28.05.2020 06:00