J'essaie de créer un effet d'animation simple (je pense) basé sur un changement de propriété dans mon ViewModel. Je voudrais que la cible soit un bloc de texte spécifique dans le modèle de contrôle d'un contrôle personnalisé, qui hérite de Window.WPF: Sélection de la cible d'une animation
À partir des exemples d'articles que j'ai vus, un DataTrigger est le moyen le plus simple d'y parvenir. Il semble que Window.Triggers ne supporte pas DataTriggers, ce qui m'a conduit à essayer d'appliquer le trigger dans le style. Le problème que j'ai actuellement est que je ne peux pas sembler cibler le TextBlock (ou n'importe quel autre contrôle enfant) - ce qui se passe est que le code ci-dessous est que l'animation est appliquée à l'arrière-plan de la fenêtre entière.
Si je ne pars de StoryBoard.Target complètement, l'effet est exactement le même.
Est-ce la bonne approche avec la mauvaise syntaxe, ou existe-t-il un moyen plus facile d'y parvenir?
<Style x:Key="MyWindowStyle" TargetType="{x:Type Window}">
<Setter Property="Template" Value="{StaticResource MyWindowTemplate}"/>
<Style.Triggers>
<DataTrigger Binding="{Binding ChangeOccurred}" Value="True">
<DataTrigger.EnterActions>
<BeginStoryboard>
<Storyboard BeginTime="00:00:00" Duration="0:0:2" Storyboard.Target="{Binding RelativeSource={RelativeSource AncestorType=TextBlock}}"
Storyboard.TargetProperty="(Background).(SolidColorBrush.Color)">
<ColorAnimation FillBehavior="Stop" From="Black" To="Red" Duration="0:0:0.5" AutoReverse="True"/>
</Storyboard>
</BeginStoryboard>
</DataTrigger.EnterActions>
</DataTrigger>
</Style.Triggers>
</Style>
Mise à jour
Il devrait y avoir aussi mentionné que j'ai essayé de nommer le TextBlock et référence via StoryBoard.TargetName (comme suggéré Timores), et obtenu l'erreur « propriété TargetName ne peut pas être sur un Style Setter. "
Quelle est exactement la cible d'animation souhaitée? Vous dites * "un bloc de texte spécifique dans le modèle de contrôle d'un contrôle personnalisé" *, mais créez ensuite un style pour une fenêtre et non un contrôle personnalisé. Pourriez-vous fournir le code contenant votre cible d'animation? La liaison cible ci-dessus ne devrait pas fonctionner car je ne m'attends pas à ce que la fenêtre ait un ancêtre de type TextBlock, n'est-ce pas ?! Est-ce possible? – gehho
Désolé, c'est une configuration difficile à décrire. Le contrôle personnalisé * est * une fenêtre, car elle dérive de la fenêtre. L'installation/le style a été créé par quelqu'un d'autre, alors j'essaie de rééquiper cette animation. Le bloc de texte est un contrôle enfant - en regardant à nouveau ceci, le RelativeSource/AncestorType n'est probablement même pas proche, puisque j'essaye de viser un enfant et pas un parent? –