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 :

[Style TabItem] Ajouter dynamiquement une image dans mon tabItem


Sujet :

Windows Presentation Foundation

  1. #1
    Membre actif Avatar de Masmeta
    Homme Profil pro
    Ing. R&D informatique industrielle
    Inscrit en
    Mai 2006
    Messages
    472
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Ing. R&D informatique industrielle
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2006
    Messages : 472
    Points : 221
    Points
    221
    Par défaut [Style TabItem] Ajouter dynamiquement une image dans mon tabItem
    Bonjour,


    J'ai créé une un ResourceDictionary pour customiser mes controls.
    Actuellement je travailel sur le style d'un TabItem et j'aimerai lui intégrer une image.
    Soit le code du style :

    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
     
     <Style TargetType="{x:Type TabItem}" x:Key="TabItemStyle">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type TabItem}">
     
                        <!-- Tab item header -->
                        <Border Name="border" 
                            SnapsToDevicePixels="True" 
                            BorderThickness="0" 
                            Padding="5,8,40,8"
                            Margin="0,0,-4,0">
                            <StackPanel Orientation="Horizontal">
                                <!-- <Image Name="buttonImg" Height="32" Width="32" Source="{Binding ImgPath}"></Image> -->
                                <TextBlock Name="buttonText" 
                                    Margin="5,0" 
                                    FontSize="14" 
                                    Foreground="{StaticResource FontDarkGrayBrush}" 
                                    Text="{TemplateBinding Header}" 
                                    VerticalAlignment="Center" />
                            </StackPanel>
                        </Border>
     
                        <ControlTemplate.Triggers>
                            <Trigger Property="IsMouseOver" Value="True">
                                <Trigger.Setters>
                                    <Setter TargetName="border" Property="Background" Value="{StaticResource HoverBlueBrush}" />
                                </Trigger.Setters>
                            </Trigger>
                            <Trigger Property="IsSelected" Value="True">
                                <Trigger.Setters>
                                    <Setter TargetName="border" Property="Background" Value="{StaticResource SelectionBlueBrush}" />
                                    <Setter TargetName="buttonText" Property="Foreground" Value="White"/>
                                </Trigger.Setters>
                            </Trigger>
     
                        </ControlTemplate.Triggers>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    J'ai donc créer un ControlTemplate avec un Stackpanel comprenant une image et un textbox.
    Comment définir le TemplateBinding pour avoir le URI de la source de l'image?
    Où existe il une autre solution plus simple?

    Merci de votre aide.

  2. #2
    Membre actif Avatar de Masmeta
    Homme Profil pro
    Ing. R&D informatique industrielle
    Inscrit en
    Mai 2006
    Messages
    472
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Ing. R&D informatique industrielle
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2006
    Messages : 472
    Points : 221
    Points
    221
    Par défaut
    J'ai créé une DependencyProperty

    Voici le code :
    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
     
     public class Extensions:DependencyProperty
        {
     
            public static readonly DependencyProperty SourceProperty 
                = DependencyProperty.Register( "Source",
                                                typeof(String),
                                                typeof(Extensions),
                                               new UIPropertyMetadata(null)
            );
            public static String GetSource(DependencyObject obj)
            {
                return (String)obj.GetValue(SourceProperty);
            }
     
            public static void SetSource(DependencyObject obj, String value)
            {
                obj.SetValue(SourceProperty, value);
            }
        }
    Voici mon code dans le resourceDictionnary

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    [...]
        <StackPanel Orientation="Horizontal">
                                <Image Name="buttonImg" Height="32" Width="32" Source="{Binding Path=extensions:Extension.Source}"></Image>
                                <TextBlock Name="buttonText" 
                                    Margin="5,0" 
                                    FontSize="14" 
                                    Foreground="{StaticResource FontDarkGrayBrush}" 
                                    Text="{TemplateBinding Header}" 
                                    VerticalAlignment="Center" />
                            </StackPanel>
    [...]
    Et enfin mon code dans le Mainwindows
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     <TabItem Header="Alertes" Style="{StaticResource TabItemStyle}" Background="#FF08465F" Ext:Extensions.Source="pack://application:,,,/Myappli;component/Pictures/test.png"/>
    Je n'ai pas d'image d'afficher.
    Savez-vous pourquoi?

    Merci de votre aide

  3. #3
    Membre actif Avatar de Masmeta
    Homme Profil pro
    Ing. R&D informatique industrielle
    Inscrit en
    Mai 2006
    Messages
    472
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Ing. R&D informatique industrielle
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2006
    Messages : 472
    Points : 221
    Points
    221
    Par défaut
    Ceux lien m'a aider pour afficher mon image : http://www.hardcodet.net/2009/01/cre...hed-properties

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

Discussions similaires

  1. j'arrive pas a afficher inserer une image dans mon interface
    Par safa baccouche dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 02/09/2009, 06h04
  2. Réponses: 1
    Dernier message: 24/08/2007, 13h48
  3. Comment inseré une image dans mon projet?
    Par Micheal1221 dans le forum C++Builder
    Réponses: 2
    Dernier message: 07/07/2006, 15h00
  4. comment insérer une image dans mon .pas
    Par korntex5 dans le forum Langage
    Réponses: 3
    Dernier message: 04/05/2006, 12h54
  5. comment ajouter une image dans mon HTML??
    Par Mickey.jet dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 22/03/2006, 16h12

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