Ho più storyboard che accedono alla stessa proprietà (non allo stesso tempo). Dopo che uno storyboard ha cambiato la proprietà, l'altro sembra non aver accesso ad esso e non cambia nulla .. Cosa posso fare contro questo?Più storyboard su una proprietà
Esempio:
<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>
Questo è il codice di esempio più piccolo ho potuto fare. Dopo aver passato il mouse su un oggetto, non diventerà blu quando è selezionato (prova a fare clic su un elemento e poi usa i tasti freccia per selezionare gli elementi senza passarli sopra).
Che cosa intendi esattamente per "l'altro sembra non aver accesso ad esso e non cambia nulla"? Hai ricevuto un messaggio di errore? Comportamento inaspettato specifico? –
Per essere più specifici, ho un ListBox. In ItemContainerStyle definisco un modello per tutti i ListBoxItems. Qui faccio scattare IsMouseOver e IsSelected e definisco uno storyboard per un effetto di dissolvenza in entrata/uscita. Quando l'elemento è al passaggio del mouse, lo sfondo dovrebbe diventare arancione, e quando è selezionato dovrebbe diventare blu. Posso passare il mouse su un oggetto tutte le volte che voglio, funziona. Ma se lo seleziono e lo deseleziono di nuovo, l'effetto hover non funziona più. Se utilizzo proprietà diverse, funziona ancora. – eWolf
Sembra essere qualcosa con l'ordine dei trigger. Se metto il trigger IsSelected davanti al trigger IsMouseOver (che, a proposito, è un MultiTrigger e non viene generato quando viene selezionato l'elemento IsSelected), è il contrario: l'effetto IsSelected non funziona dopo che l'elemento è stato sospeso una volta. – eWolf