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

Développement Windows Discussion :

[WPF] Trigger sur IsMouseOver d'un élément parent


Sujet :

Développement Windows

  1. #1
    Membre du Club
    Inscrit en
    Novembre 2010
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 105
    Points : 65
    Points
    65
    Par défaut [WPF] Trigger sur IsMouseOver d'un élément parent
    Bonjour à tous,

    J'essaie de changer la source d'un élément Image contenu dans une Grid sur changement de la propriété IsMouseOver de la Grid.

    Voici mon code :
    Code xaml : 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
    <!--Panier-->
    <Grid Grid.Column="2" Name="_grd_panier" VerticalAlignment="Center" HorizontalAlignment="Right" Margin="10" Cursor="Hand">
        <!--<Grid.Style>
            <Style TargetType="{x:Type Grid}">
                <Style.Resources>
                    <Style TargetType="{x:Type Image}">
                        <Style.Triggers>
                            <DataTrigger Binding="{Binding RelativeSource={RelativeSource AncestorType=Grid}, Path=IsMouseOver}" Value="True">
                                <Setter Property="Source" Value="pack://application:,,,/Image/panier.png"/>
                            </DataTrigger>
                        </Style.Triggers>
                    </Style>
                </Style.Resources>
            </Style>
        </Grid.Style>-->
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="Auto"/>
            <ColumnDefinition Width="Auto"/>
            <ColumnDefinition/>
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
            <RowDefinition/>
            <RowDefinition/>
        </Grid.RowDefinitions>
     
        <Image Grid.RowSpan="2" Name="_img_panier" Source="pack://application:,,,/Image/panierB.png" Margin="10 0" Height="40">
            <Image.Style>
                <Style TargetType="{x:Type Image}">
                    <Style.Triggers>
                        <DataTrigger Binding="{Binding RelativeSource={RelativeSource AncestorType=Grid}, Path=IsMouseOver}" Value="True">
                            <Setter Property="Source" Value="pack://application:,,,/Image/panier.png"/>
                        </DataTrigger>
                    </Style.Triggers>
                </Style>
            </Image.Style>
        </Image>
     
        <Border Grid.RowSpan="2" Grid.Column="1" BorderThickness="1" BorderBrush="White"/>
     
        <TextBlock Grid.Column="2" Text="MON PANIER" FontSize="18" VerticalAlignment="Bottom" Margin="10 0"/>
        <StackPanel Grid.Column="2" Grid.Row="1" Orientation="Horizontal" VerticalAlignment="Top" Margin="10 0">
            <TextBlock Text="0"/>
            <TextBlock Text=" article(s) : "/>
            <TextBlock Text="0,00"/>
            <TextBlock Text="€"/>
        </StackPanel>
    </Grid>

    Pourtant l'image ne change pas quand je passe ma souris sur l'élément...

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Pour que cela fonctionne, il faut que ta propriété "Source" soit définie dans le style et non pas en propriété directe :
    Code Xaml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <Image Grid.RowSpan="2" Name="_img_panier" Margin="10 0" Height="40">
            <Image.Style>
                <Style TargetType="{x:Type Image}">
                    <Style.Triggers>
                        <DataTrigger Binding="{Binding RelativeSource={RelativeSource AncestorType=Grid}, Path=IsMouseOver}" Value="True">
                            <Setter Property="Source" Value="pack://application:,,,/Image/panier.png"/>
                        </DataTrigger>
                    </Style.Triggers>
                </Style>
                <Setter Property="Source" Value="pack://application:,,,/Image/panierB.png" />
            </Image.Style>
        </Image>

  3. #3
    Membre du Club
    Inscrit en
    Novembre 2010
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 105
    Points : 65
    Points
    65
    Par défaut
    Ce qui est logique car sinon le style ne peut pas redéfinir cette propriété...

    Merci à toi !

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 06/05/2010, 10h59
  2. Style sur un élément parent
    Par scrouet dans le forum Mise en page CSS
    Réponses: 5
    Dernier message: 26/09/2009, 21h33
  3. Réponses: 2
    Dernier message: 18/02/2008, 11h30
  4. Réponses: 5
    Dernier message: 30/01/2008, 09h18
  5. [WPF][triggers] binding sur un DataView?
    Par bakonu dans le forum Windows Presentation Foundation
    Réponses: 4
    Dernier message: 26/10/2007, 09h25

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