Hallo allerseits
Ich habe Probleme mit dem Animieren der
Ich bekomme die Fehlermeldung:
""(0).(1)" kann nicht für eine unveränderliche Objektinstanz animiert werden."
Aber nur wenn die Instanz von Path so aussieht:
Spoiler anzeigen
Bei diesen zwei Instanzen von
Spoiler anzeigen
Das zweite Problem ist, wenn ich nochmal auf die Schaltfläche klicke, wenn die Animation noch nicht abgeschlossen ist, wird die Farbe nicht wieder zurückgesetzt, sondern es wird eine zweite Animation gestartet, die als "Ausgangsfarbe" die aktuelle Farbe der ersten Animation nimmt. Kann man dieses Verhalten irgendwie blocken?
Edit: OK, das mit der zweiten Animation kann ich wahrscheinlich mit dem Schlüsselwort
Freue mich auf Eure Antowrten
Ich habe Probleme mit dem Animieren der
Fill
-Eigenschaft eines Path
-Controls. Mein Code sieht so aus:XML-Quellcode
- <Style TargetType="{x:Type Path}">
- <Style.Triggers>
- <EventTrigger RoutedEvent="MouseLeftButtonDown">
- <BeginStoryboard>
- <Storyboard>
- <ColorAnimation To="White" Duration="00:00:00.500" AutoReverse="True" Storyboard.TargetProperty="(Path.Fill).(SolidColorBrush.Color)"/>
- <!--<ColorAnimationUsingKeyFrames Storyboard.TargetProperty="(Path.Fill).(SolidColorBrush.Color)">
- <LinearColorKeyFrame KeyTime="00:00:01" Value="White"/>
- </ColorAnimationUsingKeyFrames>-->
- </Storyboard>
- </BeginStoryboard>
- </EventTrigger>
- </Style.Triggers>
- </Style>
Ich bekomme die Fehlermeldung:
""(0).(1)" kann nicht für eine unveränderliche Objektinstanz animiert werden."
Aber nur wenn die Instanz von Path so aussieht:
XML-Quellcode
- <Border Name="brdPlay" Grid.Column="2" Style="{DynamicResource Navigationsbuttons}" ToolTip="{Binding PlayToolTip, Mode=OneWay, UpdateSourceTrigger=PropertyChanged}">
- <Border.InputBindings>
- <MouseBinding MouseAction="LeftClick" Command="{Binding Abspielen}"/>
- </Border.InputBindings>
- <Canvas Grid.Row="0" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" Width="32" Height="32" VerticalAlignment="Center" HorizontalAlignment="Center">
- <Path Name="icoPlay" Fill="{DynamicResource VordergrundfarbeBrush}" Data="{Binding AbspielenIcon, Mode=OneWay, UpdateSourceTrigger=PropertyChanged}"/>
- </Canvas>
- </Border>
Bei diesen zwei Instanzen von
Path
funktioniert es:XML-Quellcode
- <ListBox Name="lstAlben" ScrollViewer.HorizontalScrollBarVisibility="Hidden" Grid.Column="1" Grid.Row="1" ItemsSource="{Binding AnzuzeigendeAlben}" SelectedItem="{Binding AusgewaehltesAlbum, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" SelectionMode="Single" SelectedIndex="{Binding MarkiertesAlbum, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" IsSynchronizedWithCurrentItem="True">
- <ListBox.ItemTemplate>
- <DataTemplate>
- <Grid>
- <Grid.ColumnDefinitions>
- <ColumnDefinition Width="3*"/>
- <ColumnDefinition Width="3*"/>
- <ColumnDefinition Width="94*"/>
- </Grid.ColumnDefinitions>
- <TextBlock Text="{Binding Path=Album}" Grid.Column="2" TextTrimming="CharacterEllipsis">
- <ToolTipService.ToolTip>
- <StackPanel>
- <TextBlock Text="{Binding Path=Interpret, StringFormat='Interpret: \{0\}'}"/>
- <TextBlock Text="{Binding Path=Album, StringFormat='Album: \{0\}'}"/>
- </StackPanel>
- </ToolTipService.ToolTip>
- </TextBlock>
- <Border Name="brdAlbumZuPlaylistZufuegen" Height="{StaticResource listboxitemhoehe}" Grid.Column="0" Style="{DynamicResource Navigationsbuttons}" ToolTip="Füge alle Musiktitel dieses Albums der Playlist des gewählten Plattendecks zu..." HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
- <Border.InputBindings>
- <MouseBinding MouseAction="LeftClick" Command="{Binding DataContext.AlbumZuPlaylistZufuegen, ElementName=lstAlben}" CommandParameter="{Binding}"/>
- </Border.InputBindings>
- <Viewbox Stretch="Uniform">
- <Path Margin="4" Stretch="Uniform" Fill="{DynamicResource VordergrundfarbeBrush}" Data="xxx"/>
- </Viewbox>
- </Border>
- <Border Name="brdAlbumAbspielen" Height="{StaticResource listboxitemhoehe}" Grid.Column="1" Style="{DynamicResource Navigationsbuttons}" ToolTip="Spiele alle Musiktitel dieses Albums auf dem gewählten Plattendeck ab...">
- <Border.InputBindings>
- <MouseBinding MouseAction="LeftClick" Command="{Binding DataContext.AlbumAbspielen, ElementName=lstAlben}" CommandParameter="{Binding}"/>
- </Border.InputBindings>
- <Viewbox Stretch="Uniform">
- <Path Margin="4" Stretch="Uniform" Fill="{DynamicResource VordergrundfarbeBrush}" Data="yyy"/>
- </Viewbox>
- </Border>
- </Grid>
- </DataTemplate>
- </ListBox.ItemTemplate>
- </ListBox>
Das zweite Problem ist, wenn ich nochmal auf die Schaltfläche klicke, wenn die Animation noch nicht abgeschlossen ist, wird die Farbe nicht wieder zurückgesetzt, sondern es wird eine zweite Animation gestartet, die als "Ausgangsfarbe" die aktuelle Farbe der ersten Animation nimmt. Kann man dieses Verhalten irgendwie blocken?
Edit: OK, das mit der zweiten Animation kann ich wahrscheinlich mit dem Schlüsselwort
From
beheben, ich probier das mal... Freue mich auf Eure Antowrten
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „kafffee“ ()