Celui-ci m'a bloqué. J'ai donc l'exemple d'application suivant qui est censé animer l'opacité d'un élément de bordure lorsque la souris pointe dessus. `VisualStateManager.GoToState retourne toujours faux
<UserControl.Resources>
<Style x:Key="borderstyle" TargetType="ContentControl">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ContentControl">
<Grid>
<VisualStateManager.VisualStateGroups>
<VisualStateGroup>
<VisualState x:Name="FirstState">
<Storyboard>
<DoubleAnimation To="1.0" Storyboard.TargetName="border" Storyboard.TargetProperty="Opacity" FillBehavior="HoldEnd"/>
</Storyboard>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
<Border Background="Blue" x:Name="border" Opacity="0.0"/>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</UserControl.Resources>
<Grid x:Name="LayoutRoot" Background="White">
<Border BorderBrush="Red" BorderThickness="1" Width="51" Height="51">
<ContentControl Width="50" Height="50" Style="{StaticResource borderstyle}" MouseEnter="OnMouseEntered" />
</Border>
</Grid>
`
Et dans le code derrière je le code suivant ...
private void OnMouseEntered(object sender, MouseEventArgs e)
{
bool status = VisualStateManager.GoToState(this, "FirstState", true);
}
Et ... rien ne se passe. Le statut est toujours faux et l'animation ne se déclenche jamais.
Je ne suis pas sûr de ce qui manque ici.
Wow ... merci, ça fonctionne parfaitement, je pense que j'étais perplexe parce que je construis habituellement des contrôles personnalisés et de passer "ça" fonctionne très bien. ious maintenant :) Merci – Senkwe