J'ai des problèmes pour obtenir une valeur de storyboard à lier à mon viewmodel. J'ai essayé beaucoup de variétés de xaml de liaison, sans chance. L'objectif de haut niveau est de permettre au ViewModel de modifier le début et la fin de la trajectoire d'une animation - cela semble être une exigence commune, mais il n'a pas été possible d'en trouver des exemples. Beaucoup de gens disent "Dans MVVM, vous ne devriez jamais essayer d'accéder au storyboard à partir du ViewModel", ce qui semble être horeshit si vous avez besoin de changer le début et la fin de l'animation à la volée. Dans tous les cas, je l'ai montré mon premier exemple, naïf ici:Problème lié aux valeurs du storyboard pour viewmodel
<UserControl
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:FishTank" x:Class="FishTank.FishTankControlView"
mc:Ignorable="d"
d:DesignHeight="100" d:DesignWidth="100" >
<UserControl.Resources>
<Storyboard x:Key="Storyboard1">
<DoubleAnimationUsingKeyFrames x:Name="xTransform" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.X)" Storyboard.TargetName="image">
<SplineDoubleKeyFrame KeyTime="0" Value="-155"/>
<SplineDoubleKeyFrame KeyTime="0:0:4.5" Value="521"/>
</DoubleAnimationUsingKeyFrames>
<DoubleAnimationUsingKeyFrames x:Name="yTransform" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.Y)" Storyboard.TargetName="image">
<SplineDoubleKeyFrame KeyTime="0" Value="{Binding YPos1}"/>
<SplineDoubleKeyFrame KeyTime="0:0:4.5" Value="{Binding YPos2}"/>
</DoubleAnimationUsingKeyFrames>
</Storyboard>
</UserControl.Resources>
<UserControl.DataContext>
<local:FishTankControlViewModel/>
</UserControl.DataContext>
<UserControl.Triggers>
<EventTrigger RoutedEvent="FrameworkElement.Loaded">
<BeginStoryboard Storyboard="{DynamicResource Storyboard1}"/>
</EventTrigger>
</UserControl.Triggers>
<Grid Background="Transparent">
<Image x:Name="image" Width="100" Height="100" Source="pack://siteoforigin:,,,/Resources/Fish orange_right.png" RenderTransformOrigin="0.5,0.5">
<Image.RenderTransform>
<TransformGroup>
<ScaleTransform/>
<SkewTransform/>
<RotateTransform/>
<TranslateTransform/>
</TransformGroup>
</Image.RenderTransform>
</Image>
</Grid>
Je veux avoir Ypos1 et Ypos2 liés aux points de début et de fin de la transformation Y. J'ai essayé différentes variantes en utilisant RelativeSource et FindAncestor, mais tout cela me dépasse. Je voudrais une solution qui me permet de rester avec le framework 3.5 si possible.
J'ai essayé de changer le "StaticResource Storyboard1" en "DynamicResource Storyboard1" sans aucune chance.
Remarque - Comme un contrôle de santé mentale, je confirme que je suis capable de lier des contrôles normaux comme des boutons et des zones de texte à ces deux propriétés, Ypos1 et Ypos2, donc je suis assez sûr que la plomberie de base fonctionne ...
Merci beaucoup, Randy
erreurs de liaison dans la sortie ou la fenêtre immédiate –