IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

WinRT Discussion :

Storyboard et Datatemplate


Sujet :

WinRT

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2012
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Storyboard et Datatemplate
    Bonjour à tous,

    Tout juste débutant dans le dev Windows, je suis en train d'apprendre sur le tas, en réalisant ma première app.

    Mon souci vient des animations. J'ai actuellement une itemgridview dont le template est le suivant:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    <DataTemplate x:Key="DefaultGridItemTemplate">
                <Grid HorizontalAlignment="Left" Width="250" Height="250">
    <!-- Code à rajouter pour animation -->
                	<Image Source="{Binding Image}" Stretch="UniformTofill"/>
     
                    <StackPanel x:Name="stackPanel" VerticalAlignment="Bottom" Orientation="Vertical" HorizontalAlignment="Stretch"
                            Background="{StaticResource ListViewItemOverlayBackgroundThemeBrush}" Height="70" RenderTransformOrigin="0.5,0.5">
                        <StackPanel.RenderTransform>
                            <CompositeTransform/>
                        </StackPanel.RenderTransform>
                        <TextBlock Text="{Binding Title}" Style="{StaticResource GridTitleTextStyle}" Foreground="White"/>
                        <StackPanel VerticalAlignment="Bottom" Orientation="Horizontal" HorizontalAlignment="Right">
                            <TextBlock Text="Last Updated" Margin="12,4,0,8" Height="42" Foreground="White"/>
                            <TextBlock Text="{Binding PubDate, Converter={StaticResource dateConverter}}" Margin="12,4,12,8" Foreground="White"/>
                        </StackPanel>
                    </StackPanel>
                </Grid>
            </DataTemplate>

    Je cherche à avoir une animation du stackpanel de chaque item, un peu comme sur l'appli lemonde (très belle par ailleurs). En passant par blend, le code que j'ai ajouté est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <Grid.Resources>
                		<Storyboard x:Name="Storyboard1">
                			<DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.TranslateY)" Storyboard.TargetName="stackPanel">
                				<EasingDoubleKeyFrame KeyTime="0" Value="-176.667"/>
                				<EasingDoubleKeyFrame KeyTime="0:0:1" Value="-83.334"/>
                				<EasingDoubleKeyFrame KeyTime="0:0:2" Value="-0.667"/>
                			</DoubleAnimationUsingKeyFrames>
                			<DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.TranslateX)" Storyboard.TargetName="stackPanel">
                				<EasingDoubleKeyFrame KeyTime="0" Value="-0.667"/>
                				<EasingDoubleKeyFrame KeyTime="0:0:1" Value="0.666"/>
                				<EasingDoubleKeyFrame KeyTime="0:0:2" Value="0.666"/>
                			</DoubleAnimationUsingKeyFrames>
                		</Storyboard>
                	</Grid.Resources>
    Dans la page code-behind, je fais lance alors l'animation par:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Storyboard sb =
                   this.FindName("Storyboard1") as Storyboard;
    if (sb!= null) sb.Begin();
    Premier problème, sb est toujours null, Storyboard1 n'est pas trouvé !

    Qu'a cela ne tienne, j'ai sorti ma définition de storyboard de mon DataTemplate DefaultGridItemTemplate, pour le mettre directement entre les balises Page.Resources.

    Cette fois-ci, l'appel au Storyboard depuis la page code-behind est bien fait, mais son targetName (stackPanel) est introuvable....

    Je suis un peu perdu, je me doute bien que "l'obstacle" provient du fait que ce stackPanel est défini dans mon dataTemplate....

    Merci à vous de prendre le temps de m'éclairer !

  2. #2
    Membre expert
    Avatar de GuruuMeditation
    Homme Profil pro
    .Net Architect
    Inscrit en
    Octobre 2010
    Messages
    1 705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : .Net Architect
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 705
    Points : 3 568
    Points
    3 568
    Par défaut
    Je ne vois pas l'appli "le monde" sur le store, probablement qu'elle n'est pas dispo pour la Belgique

    Mais je crois que je vois ce que tu veux, et a mon avis, pour respecter la philosophie Metro, regarde du côte des Transitions, qui sont les animations standard de Metro :

    http://blog.loicrebours.fr/2012/05/2...et-animations/
    Microsoft MVP : Windows Platform

    MCPD - Windows Phone Developer
    MCPD - Windows Developer 4

    http://www.guruumeditation.net

    “If debugging is the process of removing bugs, then programming must be the process of putting them in.”
    (Edsger W. Dijkstra)

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2012
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Bonjour GuruuMeditation et merci de ta réponse,

    L'application lemonde est celle d'un journal francais,ceci doit expliquer cela. En fait je voudrais que mes stackpanels soient animés, montent et descendent au cours du temps sur mes items de grid.

    J'étais déjà passé par le blog de monsieur Rebours (très intéressant par ailleurs), mais ma question concerne plutôt les animations personnalisées, et le conflit entre l'application d'un storyboard à un stackpanel contenu dans un datatemplate que je n'arrive pas à résoudre.

    Je ne sais pas si je suis bien clair ;s

Discussions similaires

  1. CMS, storyboard et fichiers musicaux
    Par blman dans le forum Débuter
    Réponses: 0
    Dernier message: 14/01/2008, 20h11
  2. [WPF] Storyboard et valeurs non numérique
    Par JuTs dans le forum Framework .NET
    Réponses: 3
    Dernier message: 19/11/2007, 20h07
  3. [WPF] datatemplate acces aux controls
    Par MrCyprom dans le forum Windows Presentation Foundation
    Réponses: 3
    Dernier message: 21/09/2007, 16h17
  4. [XAML]Modifier une valeur dans un storyBoard par code C#
    Par Benaz dans le forum Général Dotnet
    Réponses: 2
    Dernier message: 19/08/2007, 21h30
  5. [WPF] ControlTemplate - DataTemplate - Style ?
    Par PlaTyPuSs dans le forum Windows Presentation Foundation
    Réponses: 23
    Dernier message: 10/05/2007, 13h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo