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 :

KeyUp et Template


Sujet :

Windows Presentation Foundation

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 143
    Par défaut KeyUp et Template
    Bonjour,
    je cherche à attribuer un event sur le KeyUp d'une InfoTextBox, le problème étant que cette InfoTextBox se trouve dans un template défini dans un ResourceDictionary.

    Si quelqu'un peut m'aider...

    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 : 43
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Par défaut


    Dans ton dictionnary, tu met juste le style/template de ton composant. Le KeyUp, tu peux le mettre:
    - sur ta page principale si tu as juste une simple TexTBox à laquelle tu appliques un style/template
    - Dans le code de ton CustomControl, si tu en fais un

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

    Informations forums :
    Inscription : Avril 2005
    Messages : 143
    Par défaut
    En fait le control de base que j'utilise est un treeview auquel le template donne un visuel particulier:
    un Titre + un bouton de fermeture en haut, le visuel classique du treeview au milieu et une infotextbox de recherche en bas.
    Dans mon cas, ce que je cherche à faire c'est de configurer le KeyUp de l'InfoTextBox. Voici le style utilisé:
    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
    <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 x:Name="tvNewStyle" TargetType="{x:Type TreeView}">
     
                        <ContentControl x:Name="ccPopupMainMenu">
     
                            <Grid x:Name="tvGrid">
                                <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>
                                <Border Grid.Row="1" Name="Border" CornerRadius="1" Background="{StaticResource WindowBackgroundBrush}" BorderBrush="{StaticResource SolidBorderBrush}" BorderThickness="1"  >
                                    <ScrollViewer Focusable="False" CanContentScroll="False" Padding="4">
                                        <ItemsPresenter />
                                    </ScrollViewer>
                                </Border>
                                <DockPanel x:Name="dpSearch" Grid.Row="2" Background="Aqua" FlowDirection="LeftToRight" VerticalAlignment="Bottom" Height="25" DockPanel.Dock="Bottom"  >
                                    <Image Height="168" Width="18" Name="ImgSearch" DockPanel.Dock="Right" Margin="8,0,0,0"    Source="loupe.jpg"/>
                                    <!--TODO ajouter l'evenement KeyUp-->
                                    <local2:InfoTextBox x:Name="itbSearch" DockPanel.Dock="Left" Height="20" Margin="5,0" TextBoxInfo="Rechercher"/>
                                </DockPanel>
                            </Grid>
                        </ContentControl>
     
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    J'ai essayé en utilisant ce 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
    ContentControl contentcontrol = this._treeview.Template.FindName("ccPopupMainMenu", this._treeview) as ContentControl;
                if (contentcontrol != null)
                {
                    Grid grid = contentcontrol.FindName("tvGrid") as Grid;
                    if (grid != null)
                    {
                        DockPanel dockpanel = grid.FindName("dpSearch") as DockPanel;
                        if (dockpanel != null)
                        {
                            InfoTextBox infotextbox = dockpanel.FindName("itbSearch") as InfoTextBox;
     
                            if (infotextbox != null)
                            {
                                MessageBox.Show(infotextbox.Text.ToString());
                            }
                        }
                    }
                }
    Mais dès le premier if on sort car le contentcontrol est vide.....

    Si tu vois comment faire marcher ça...... merci d'avance!!!!!

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

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Par défaut
    Ce que je ne comprend pas, c'est que tu as bien créé un InfoTextBox alors pourquoi ne pas gérer le KeyUp dedans ? C'est fait pour ca....

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

    Informations forums :
    Inscription : Avril 2005
    Messages : 143
    Par défaut
    Ce template est dans un ResourceDictionary alors comment renseigner le KeyUp dans ce cas?

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

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Par défaut
    Citation Envoyé par ludogoal Voir le message
    Ce template est dans un ResourceDictionary alors comment renseigner le KeyUp dans ce cas?
    InfoTextBox n'est pas dasn un Dictionnary, c'est bien une classe que tu as écrit toi-même ?

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

Discussions similaires

  1. [Templates] Quel système utilisez-vous ? Pourquoi ?
    Par narmataru dans le forum Bibliothèques et frameworks
    Réponses: 270
    Dernier message: 26/03/2011, 00h15
  2. Template XHTML
    Par Sylvain James dans le forum XSL/XSLT/XPATH
    Réponses: 14
    Dernier message: 16/06/2003, 21h45
  3. appliquer plusieurs templates
    Par Manu_Just dans le forum XSL/XSLT/XPATH
    Réponses: 7
    Dernier message: 04/04/2003, 16h26
  4. template match="node() mais pas text()"
    Par Manu_Just dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 26/03/2003, 10h52
  5. [XSLT] template
    Par demo dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 09/09/2002, 11h31

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