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

Silverlight Discussion :

Problème d'animation et d'opacité


Sujet :

Silverlight

  1. #1
    Membre habitué Avatar de Ishizaki
    Inscrit en
    Avril 2006
    Messages
    262
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 262
    Points : 175
    Points
    175
    Par défaut Problème d'animation et d'opacité
    Re ^^!

    J'ai un petit bug avec un ContentPresenter que je voudrais rendre animé.

    En fait, au survol de la souris, je voudrais que le contenu passe d'une opacité 0.2 à 1. Le soucis, c'est qu'au survol de la souris, actuellement, le contenu passe d'une opacité de 0 à 0.2. En plus de cela, j'ai défini un Border qui prend une opacité définie dans mes Setter, alors qu'il ne devrait pas la prendre (Opacity est fixée en dur dans mon Border...).

    Ce qui me donne une opacité de 0.2 sur mon Border... Alors qu'il devrait avoir une opacité de 1...

    Voilà mon generic.xaml:

    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
     
    <Style TargetType="custom:TestBoxContainer">
            <Setter Property="Width" Value="440" />
            <Setter Property="Height" Value="300" />
            <Setter Property="Background" Value="White" />
            <!--Opacity est fixée dans ce Setter-->
            <Setter Property="Opacity" Value="0.2"></Setter>
            <Setter Property="BorderBrush" Value="Black"></Setter>
     
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="custom:TestBoxContainer">
                        <Grid x:Name="RootBoxContainer">
     
                            <!--Rectangle Conteneur-->
     
                            <!--Mon Border a bien une opacité fixée à 1, mais il prend celle du Setter...-->
                            <Border x:Name="BorderBoxContainer" Height="{TemplateBinding Height}" Width="{TemplateBinding Width}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="2" Opacity="1">
                                <Rectangle x:Name="RectangleBoxContainer" Fill="{TemplateBinding Background}" Height="{TemplateBinding Height}" Width="{TemplateBinding Width}" Opacity="1"/>
                            </Border>
     
     
                            <!--ContentPresenter-->
    <!-- Et mon ContentPresenter prend une opacité à 0, alors qu'elle devrait être à 0.2-->                        
    <ContentPresenter x:Name="ContentBoxContainer" Content="{TemplateBinding Content}" ContentTemplate="{TemplateBinding ContentTemplate}" HorizontalAlignment="Center" VerticalAlignment="Center" Opacity="0.2"/>
     
     
     
                            <!--Groupes d'Etats visuels (communs, checkbox...)-->
                            <vsm:VisualStateManager.VisualStateGroups>
     
                                <!--Groupe Commun (comme pour les boutons)-->
                                <vsm:VisualStateGroup x:Name="CommonStates">
                                    <vsm:VisualState x:Name="Normal"></vsm:VisualState>
                                    <!--Survol de la souris-->
                                    <vsm:VisualState x:Name="MouseOver">
                                        <!--On peut définir plusieurs Animations dans un Storyboard, il faut donc définir la target dans le ColorAnimation-->
                                        <Storyboard>
     
                                            <DoubleAnimation x:Name="DoubleAnimationToTransparent2" Storyboard.TargetName="ContentBoxContainer"
                                              Storyboard.TargetProperty="(UIElement.Opacity)" From="{TemplateBinding Opacity}" To="1" Duration="00:00:00.5" FillBehavior="HoldEnd">
                                            </DoubleAnimation>
     
                                        </Storyboard>
                                    </vsm:VisualState>
     
                                </vsm:VisualStateGroup>
     
     
                            </vsm:VisualStateManager.VisualStateGroups>
     
                        </Grid>
                    </ControlTemplate>
     
                </Setter.Value>
     
            </Setter>
     
        </Style>
    Et dans mon Page.xaml:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
    <controls:TestBoxContainer x:Name="TestBoxContainer1">
                <controls:TestBoxContainer.Content>
                    <Image x:Name="ImageTest" Source="Images/james.jpg" ></Image>
                </controls:TestBoxContainer.Content>
     
            </controls:TestBoxContainer>
    Merci de votre aide

  2. #2
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Juin 2005
    Messages
    288
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2005
    Messages : 288
    Points : 375
    Points
    375
    Par défaut
    Normal !

    Tu définis ton Opacity (0.2) au niveau de ton Control, donc Obligatoirement tout les autres controles que tu inclus dedans auront au maximum une opacity de 0.2 (ce qui correspond pour eux à une opacity de 1)

    Si tu veux faire ce que tu veux, il faut que tu définisses sur chaque "sous controle" l'opacity souhaitée, et que tu retires ton setter Opacity.

    Cdt,

  3. #3
    Membre habitué Avatar de Ishizaki
    Inscrit en
    Avril 2006
    Messages
    262
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 262
    Points : 175
    Points
    175
    Par défaut
    Ouch, j'avais pas vu les choses sous cet angle !

    Je pensais que lorque l'on settait ainsi une propriété, elle servait juste à être appelée en faisant un "{TemplateBinding MaPropriété}" sur une propriété du contrôle voulu. Une sorte de bibliothèque à utiliser quand on le veut quoi.

    Ce que je ne comprends pas, c'est que pour les autres propriétés, ce genre de fonctionnement marche.

    En tout cas ça fonctionne, merci beaucoup ^^.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. problème affichage animation flash sous ie
    Par -Neo- dans le forum Flash
    Réponses: 1
    Dernier message: 26/02/2008, 16h45
  2. [AS3] Problème d'animation
    Par Dizayeure dans le forum ActionScript 3
    Réponses: 2
    Dernier message: 11/02/2008, 12h25
  3. Problème pour animer un sprite
    Par Soward dans le forum SDL
    Réponses: 17
    Dernier message: 02/08/2007, 16h30
  4. [Yahoo UI] Problème d'animation
    Par wtfu dans le forum Bibliothèques & Frameworks
    Réponses: 2
    Dernier message: 10/08/2006, 11h17
  5. [Director] Problème d'animation dans navigateur
    Par phendile dans le forum Autres langages
    Réponses: 1
    Dernier message: 01/12/2004, 20h36

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