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 :

Events dans un template


Sujet :

Windows Presentation Foundation

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 143
    Points : 59
    Points
    59
    Par défaut Events dans un template
    Bonjour,
    Voilà, j'ai un template qui se trouve dans un ResourceDictionary et qui ajoute des éléments au visuel d'un TreeView. Parmis ces éléments il y a un bouton et j'aimerais savoir comment jouer sur le click de celui-ci.

    Merci d'avance.

  2. #2
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Par code, dans la surcharge de ApplyTemplate de ton contrôle, tu peux récuperer l'instance de ton template et ainsi t'abonner aux events des controles qui composent le template

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 143
    Points : 59
    Points
    59
    Par défaut
    Désolé mais j'ai pas tout saisi là.

    Voici le bout de Template qui m'intéresse:
    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
    <Style x:Key="{x:Type TreeView}" TargetType="{x:Type TreeView}">
            <Setter Property="OverridesDefaultStyle" Value="True" />
            <Setter Property="SnapsToDevicePixels" Value="True" />
            <Setter Property="ScrollViewer.HorizontalScrollBarVisibility" Value="Auto"/>
            <Setter Property="ScrollViewer.VerticalScrollBarVisibility" Value="Auto"/>
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type TreeView}">
     
                        <ContentControl x:Name="ccPopupMainMenu">
     
                            <Grid>
                                <Grid.RowDefinitions>
                                    <RowDefinition Height="25"/>
                                    <RowDefinition Height="*"/>
                                    <RowDefinition Height="20"/>
                                </Grid.RowDefinitions>
                                <DockPanel x:Name="dpHeader" Grid.Row="0" Background="{DynamicResource VerticalBrush}">
                                    <Grid>
                                        <Grid.ColumnDefinitions>
                                            <ColumnDefinition Width="*"/>
                                            <ColumnDefinition Width="15"/>
                                        </Grid.ColumnDefinitions>
                                    </Grid>
                                    <Label HorizontalAlignment="Center"  >Menu Principal</Label>
                                    <Button x:Name="bClosePopup" Grid.Column="1" Style="{StaticResource CloseTabItemMouseOver}"  />
                                </DockPanel>
    Le bouton auquel je voudrais ajouter un click est: bClosePopup.

    Ce template est dans un ResourceDictionary et est utilisé pour mettre en forme un TreeView contenu dans un control perso.

    J'ai essayé ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ControlTemplate ct = mm.Treeview.Template;
     
                ContentControl cc = (ContentControl)ct.FindName("ccPopupMainMenu", mm.Treeview);
     
                Button btn = (Button)ct.FindName("bClosePopup", cc);
    Mais pas moyen de retrouver le cc et donc encore moins mon bouton.....

    Un petit exemple pour illustrer ce que tu me conseil parce que je n'arrive pas bien à comprendre... désolé

  4. #4
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Dans ton contrôle perso, fais une surcharge de la méthode ApplyTemplate (ou OnApplyTemplate) (cela dot être possible) et met ton code dedans

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 143
    Points : 59
    Points
    59
    Par défaut
    Pour le bouton de mon Template, j'ai utilisé une RoutedCommand et cela fonctionne, mon nouveau problème, et oui ça serait trop beau si tout marchait du premier coup!!!!, est de pouvoir attribuer des commandes à des Items créés à partir d'un HierarchicalDataTemplate.
    Je m'explique:
    Je veux créer un cadre qui permette de créer des menus dynamiquement grâce à ce code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <HierarchicalDataTemplate DataType="{x:Type local:ActionItem}" ItemsSource="{Binding}">
            <WrapPanel>
                <Image Height="18" Width="18" ="{Binding Path=Image}" >
                <TextBlock Text="{Binding Path=Text}" />
            </WrapPanel>
        </HierarchicalDataTemplate>
    Cela fonctionne très bien, mais comment ajouter une command à certains éléments (je peux ajouter un attribut command aux éléments bindés mais je ne vois pas comment les liers à la méthode à appeler.....).

    Merci d'avance

Discussions similaires

  1. un event dans un event
    Par kenny49 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 04/08/2006, 15h34
  2. PB de balises dans un template récursif ?
    Par Kyti dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 26/05/2006, 09h44
  3. [DreamWeaver]Les liens dans ma template .dwt
    Par mamiberkof dans le forum Dreamweaver
    Réponses: 2
    Dernier message: 14/04/2006, 18h12
  4. [XSL] Passage de variable dans un template
    Par Otarie dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 14/11/2005, 23h50
  5. cast dans un template
    Par olivic dans le forum Langage
    Réponses: 15
    Dernier message: 20/10/2004, 14h10

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