J'ai plusieurs storyboards qui accèdent à la même propriété (pas en même temps). Après qu'un storyboard a changé la propriété, l'autre semble n'y avoir accès et ne change rien. Que puis-je faire contre cela?Plusieurs storyboards sur une seule propriété
Exemple:
<ListBox>
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ListBoxItem}">
<Border Name="Border" BorderBrush="DarkGray" BorderThickness="1" Margin="3">
<ContentPresenter />
<Border.Background>
<SolidColorBrush />
</Border.Background>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsSelected" Value="True">
<Trigger.EnterActions>
<BeginStoryboard>
<Storyboard>
<ColorAnimation Storyboard.TargetName="Border" Storyboard.TargetProperty="Background.Color" To="#3e8bff" Duration="0:0:0.1" />
</Storyboard>
</BeginStoryboard>
</Trigger.EnterActions>
<Trigger.ExitActions>
<BeginStoryboard>
<Storyboard>
<ColorAnimation Storyboard.TargetName="Border" Storyboard.TargetProperty="Background.Color" To="White" Duration="0:0:0.1" />
</Storyboard>
</BeginStoryboard>
</Trigger.ExitActions>
</Trigger>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="IsMouseOver" Value="True" />
<Condition Property="IsSelected" Value="False" />
</MultiTrigger.Conditions>
<MultiTrigger.EnterActions>
<BeginStoryboard>
<Storyboard>
<ColorAnimation Storyboard.TargetName="Border" Storyboard.TargetProperty="Background.Color" To="Orange" Duration="0:0:0.1" />
</Storyboard>
</BeginStoryboard>
</MultiTrigger.EnterActions>
<MultiTrigger.ExitActions>
<BeginStoryboard>
<Storyboard>
<ColorAnimation Storyboard.TargetName="Border" Storyboard.TargetProperty="Background.Color" To="White" Duration="0:0:0.1" />
</Storyboard>
</BeginStoryboard>
</MultiTrigger.ExitActions>
</MultiTrigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ListBox.ItemContainerStyle>
<ListBox.Items>
<sys:String>hey</sys:String>
<sys:String>du</sys:String>
<sys:String>dux</sys:String>
<sys:String>duy</sys:String>
<sys:String>dua</sys:String>
</ListBox.Items>
</ListBox>
C'est le plus petit exemple de code que je pourrais faire. Après avoir survolé un élément, il ne devient pas bleu lorsqu'il est sélectionné (essayez de cliquer sur un élément, puis utilisez les touches fléchées pour sélectionner les éléments sans les déplacer).
Que voulez-vous dire par "l'autre ne semble pas y avoir accès et ne change rien"? Avez-vous un message d'erreur? Comportement inattendu spécifique? –
Pour être plus précis, j'ai un ListBox. Dans ItemContainerStyle, je définis un modèle pour tous les ListBoxItems. Ici, je déclenche IsMouseOver et IsSelected et je définis un Storyboard pour un effet de fondu entrant/sortant. Lorsque l'élément est survolé, l'arrière-plan doit devenir orange et lorsqu'il est sélectionné, il doit devenir bleu. Je peux planer un objet autant de fois que je veux, ça marche. Mais si je le sélectionne et le désélectionne à nouveau, l'effet de survol ne fonctionne plus. Si j'utilise des propriétés différentes, cela fonctionne toujours. – eWolf
Cela semble être quelque chose avec l'ordre des déclencheurs. Si je mets le trigger IsSelected devant le trigger IsMouseOver (qui, soit dit en passant, est un MultiTrigger et n'est pas déclenché quand l'item IsSelected), c'est l'inverse: L'effet IsSelected ne fonctionne pas après le survol de l'item une fois que. – eWolf