Je développe une application (VisualStudio 2010 Express pour Windows Phone). J'ai une listbox avec des images et un storyboard avec une animation (une projection) que je veux appliquer à un listboxitem/image spécifique lorsque l'événement SelectionChanged est déclenché (pas immédiatement mais dans le gestionnaire d'évènement). Comment puis-je "lier" mon animation à cet élément ListBox spécifique?wp7/Silverlight] Comment animer un ListBoxItem sur SelectionChanged?
1
A
Répondre
2
Eh bien, après essai et erreur, j'ai trouvé une solution, mais ce n'est pas exactement ce que je voulais (le storyboard défini en dehors du datatemplate et peut-être moins de code, je pense que c'est trop pour renverser une image) Fermer.
ainsi, l'exemple listbox:
<ListBox x:Name="lbxCardTable" SelectionChanged="lbxCardTable_SelectionChanged">
<ListBox.ItemTemplate>
<DataTemplate>
<Grid x:Name="imgContainer">
<Image x:Name="img" Source="{Binding } />
<Grid.Resources>
<Storyboard x:Name="itemSb">
<DoubleAnimationUsingKeyFrames
Storyboard.TargetName="imgContainer"
Storyboard.TargetProperty="(UIElement.Projection).(PlaneProjection.RotationY)">
<EasingDoubleKeyFrame KeyTime="0" Value="0"/>
<EasingDoubleKeyFrame KeyTime="0:0:0.5" Value="90"/>
</DoubleAnimationUsingKeyFrames>
</Storyboard>
</Grid.Resources>
<Grid.Projection>
<PlaneProjection/>
</Grid.Projection>
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
et le code derrière:
private void lbxCardTable_SelectionChanged(object sender, SelectionChangedEventArgs e) {
object selectedItem = lbxCardTable.SelectedItem;
ListBoxItem lbitem = (ListBoxItem)lbxCardTable.ItemContainerGenerator.ContainerFromItem(selectedItem);
var border =(Border) VisualTreeHelper.GetChild(lbitem, 0);
var mcontentcontrol =(ContentControl) VisualTreeHelper.GetChild(border, 0);
var contentpresenter =(ContentPresenter) VisualTreeHelper.GetChild(mcontentcontrol, 0);
var mgrid=(Grid)VisualTreeHelper.GetChild(contentpresenter,0);
Storyboard sb = mgrid.Resources["itemSb"] as Storyboard;
if (sb.GetCurrentState() != ClockState.Stopped) {
sb.Stop();
}
sb.Begin();
}
Questions connexes
- 1. Animer ListBoxItem après avoir appuyé sur un bouton dans DataTemplate
- 2. Comment faire pour déclencher un événement ComboBox SelectionChanged à partir d'un ListBoxItem imbriqué?
- 3. WPF - Animation sur SelectionChanged
- 4. Comment animer TextDecoration Strikethrougn sur un TextBlock?
- 5. Comment puis-je avoir un événement Click sur ListBoxItem?
- 6. Animer un UIView sur un CGPoint
- 7. Comment lier correctement un ListBoxItem dans WPF?
- 8. Comment animer un streamgraph protovis?
- 9. ContentTemplateSelector et choisir un modèle basé sur l'élément sélectionné ListBoxItem
- 10. ListBoxItem sélection sur le focus TextBox
- 11. Bordure en pointillés sur ListBoxItem dans WPF
- 12. WPF distinguer entre le codage-SelectionChanged et le mouse-SelectionChanged
- 13. SelectionChanged d'un enfant ListBox
- 14. WPF - Comment obtenir un objet lié à un ListBoxItem
- 15. Événement WPF Listview SelectionChanged
- 16. Récupère le ListBoxItem dans un ListBox
- 17. Comment animer un UIButton dans un UITableView?
- 18. Comment sélectionner ListBoxItem en cliquant sur le bouton dans Template?
- 19. WPF Combobox Liaison d'enregistrements SelectionChanged
- 20. ListBox avec ItemTemplate: SelectionChanged non déclenché
- 21. Android: animer un rectangle
- 22. Comment animer un sprite en SFML
- 23. Comment animer un cube tournant en C#?
- 24. Déterminer la position ListboxItem dans un canevas?
- 25. Comment animer View.setVisibility (GONE)
- 26. Silverlight MVVM ListBoxItem IsSelected
- 27. Aide Création d'un style pour un ListBoxItem
- 28. ListboxItem chargé plusieurs fois
- 29. Animer un chemin?
- 30. Comment animer des vues?