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

Windows Presentation Foundation Discussion :

Probleme animation Textblock background


Sujet :

Windows Presentation Foundation

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 7
    Par défaut Probleme animation Textblock background
    Bonjour,
    j'essaye d'animer le foreground d'un TextBlock a chaque fois que le texte change
    Mon textblock est binde sur un objet metier qui lui meme est de type INotifyPropertyChanged.
    J'ai ecrit 2 datatrigger pour gerer les changements de valeur .J'ai defini 2 varibales A et B qui passent alternativement a False et a True afin de declencher, a chaque changement de valeur au moins un datatrigger.
    Mais cela ne fonctionne pas. Si on genere beaucoup de changements , il n'y a plus qu'un seul datatrigger qui se declenche.
    Est-ce que vous avez une idee ?

    Ca marche donc presque pour le Foreground mais je n'uy arrive pas avec le background ?

    Avez-vous egalement une idee ou une meilleur solution ?

    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
     
    <Window.Resources>
            <local:Prix x:Key="prix"/>                
            <Style x:Key="s1" TargetType="{x:Type TextBlock}">         
                <Style.Triggers>
                    <DataTrigger Binding="{Binding Path=A}" Value="True" >
                        <DataTrigger.EnterActions>
                            <BeginStoryboard>
                                <Storyboard>                                                                
                                    <ColorAnimation From="Red" To="DarkGray"                                                          
                                                    Duration="0:0:0.5"
                                                    Storyboard.TargetProperty="(TextBlock.Foreground).(SolidColorBrush.Color)"                                             
                                        />
                                </Storyboard>
                            </BeginStoryboard>
                        </DataTrigger.EnterActions>
                    </DataTrigger>
                    <DataTrigger Binding="{Binding Path=B}" Value="True" >
                        <DataTrigger.EnterActions>
                            <BeginStoryboard>
                                <Storyboard>
                                    <ColorAnimation From="Lime" To="DarkGray"                                                          
                                                    Duration="0:0:0.5"
                                                    Storyboard.TargetProperty="(TextBlock.Foreground).(SolidColorBrush.Color)"                                             
                                        />
                                </Storyboard>
                            </BeginStoryboard>
                        </DataTrigger.EnterActions>
                    </DataTrigger>
                </Style.Triggers>
            </Style>                
        </Window.Resources>
     
     
     
        <DockPanel DataContext="{Binding Source={StaticResource prix}}">                        
            <Button  Width="150"  Height="30" DockPanel.Dock="Top"  Content="Click" Click="Button_Click" />
            <TextBlock   Style="{StaticResource s1}"   
                         Foreground="DarkGray"
                         Background="Black"
                        Width="200"  
                        Height="200" 
                        FontSize="30"  
                        Text="{Binding Path=Valeur}"                        
                       >
            </TextBlock>
     
        </DockPanel>
    et le code c#

    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
     
    public class Prix : INotifyPropertyChanged
        {
     
            private double valeur=1898;
            private bool a=false,b=true;
     
            //EstPair
            public bool A
            {
                get { return a; }
                set
                {
                    this.a = value;
                    if (PropertyChanged != null)
                        PropertyChanged(this, new PropertyChangedEventArgs("A"));
     
                }
            }
            public bool B
            {
                get { return b; }
                set
                {
                    this.b = value;
                    if (PropertyChanged != null)
                        PropertyChanged(this, new PropertyChangedEventArgs("B"));
     
                }
            }
     
     
     
            public double Valeur
            {
                get { return valeur; }
                set
                {
                    this.valeur = value;
                    if (PropertyChanged != null)
                        PropertyChanged(this, new PropertyChangedEventArgs("Valeur"));
     
     
                    A = !A;
                    B = !B;
     
     
                    Console.WriteLine("{0} {1} {2}", Valeur, A, B);
     
     
                }
            }
     
     
            #region INotifyPropertyChanged Members
     
            public event PropertyChangedEventHandler PropertyChanged;
     
            #endregion
        }
    et le code du bouton
    (FindResource("prix") as Prix).Valeur++;

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 210
    Par défaut
    Salut,

    Moi je n'utiliserais qu'une seule variable booléenne A et déclencherais deux dataTrigger sur cette propriété (EnterActions et ExitActions).

    De cette façon :
    Code xml : 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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
      <Window.Resources>
        <local:Prix x:Key="prix"/>
        <Style x:Key="s1" TargetType="{x:Type TextBlock}">
          <Style.Triggers>
            <DataTrigger Binding="{Binding Path=A}" Value="True" >
              <DataTrigger.EnterActions>
                <BeginStoryboard>
                  <Storyboard>
                    <ColorAnimation From="Red" To="DarkGray" 
                                    Duration="0:0:0.5"
                                    Storyboard.TargetProperty="(TextBlock.Foreground).(SolidColorBrush.Color)" 
                                    />
                    <ColorAnimation From="DarkGray" To="Lime" 
                                    Duration="0:0:0.5"
                                    Storyboard.TargetProperty="(TextBlock.Background).(SolidColorBrush.Color)" 
                                    />
                  </Storyboard>
                </BeginStoryboard>
              </DataTrigger.EnterActions>
              <DataTrigger.ExitActions>
                <BeginStoryboard>
                  <Storyboard>
                    <ColorAnimation From="DarkGray" To="Red" 
                                    Duration="0:0:0.5"
                                    Storyboard.TargetProperty="(TextBlock.Foreground).(SolidColorBrush.Color)" 
                                    />
                    <ColorAnimation From="Lime" To="DarkGray" 
                                    Duration="0:0:0.5"
                                    Storyboard.TargetProperty="(TextBlock.Background).(SolidColorBrush.Color)" 
                                    />
                  </Storyboard>
                </BeginStoryboard>
              </DataTrigger.ExitActions>
            </DataTrigger>
          </Style.Triggers>
        </Style>
      </Window.Resources>

Discussions similaires

  1. probleme animation flash
    Par pireschrist dans le forum Flash
    Réponses: 2
    Dernier message: 12/09/2007, 11h18
  2. [Publication HTML] Probleme animation flash php
    Par Nounoursonne dans le forum Flash
    Réponses: 1
    Dernier message: 27/07/2007, 09h30
  3. Animation et background
    Par jucreator dans le forum SDL
    Réponses: 8
    Dernier message: 13/07/2007, 17h02
  4. probleme animation locale
    Par Alex35 dans le forum Flash
    Réponses: 1
    Dernier message: 22/11/2006, 11h35
  5. Problème avec un background dans un tableau
    Par Space Cowboy dans le forum Balisage (X)HTML et validation W3C
    Réponses: 25
    Dernier message: 08/08/2006, 23h33

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