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 :

Lier un évènement click sur un tabItem [Débutant(e)]


Sujet :

Windows Presentation Foundation

  1. #1
    Membre chevronné
    Avatar de m-mas
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2003
    Messages
    576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2003
    Messages : 576
    Par défaut Lier un évènement click sur un tabItem
    Bonjour,

    je débute en WPF, j'essai de faire une petite application avec un menu de module à gauche identique à celui de Outllook et à droite mon espace de travail selon le module choisi. Grâce à internet et quelques tutos sur les styles j'ai pu reproduire le menu Outllok, par contre je bloque sur quelques chose qui semble simple, comment ajouter l'évènement click à un tabitem ?

    pour reproduire le menu outllok j'ai utilisé un TabControl ensuite j'ai modifié le style, et maintenant je veux quand je clique un module je charge un contrôle utilisateur correspondant à ce module dans l'espace de travail.

    Pour simplifier, je donne le code avec un seul tabItem et sans donner le fichier application.xaml qui contient le style :
    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
     
    <Grid DockPanel.Dock="Left">
                    <!--Définition des colonnes-->
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="200" MaxWidth="200" />
                        <ColumnDefinition Width="3" />
                        <ColumnDefinition />
                    </Grid.ColumnDefinitions>
     
                    <GridSplitter Grid.Column="1" Background="Red" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" />
                   <!-- Tab Contrôles des Modules-->
                    <TabControl Grid.Column="0" VerticalAlignment="Stretch" Width="360" Height="Auto" MaxWidth="200"
                                Style="{DynamicResource OutlookTabControlStyle}" 
                                BorderBrush="#FF6593CF" HorizontalAlignment="Left" BorderThickness="1,1,1,0">
                        <!--Paramètrage FDT-->
                        <TabItem x:Name="ParametrageFDT" Height="30" ButtonBase.Click="M_Param_Click" 
                                 Style="{DynamicResource OutlookTabItemStyle}" 
                                 Background="{DynamicResource OutlookButtonBackground}" 
                                 Foreground="{DynamicResource OutlookButtonForeground}">
                            <TabItem.Header>
                                   <StackPanel Orientation="Horizontal">
                                        <Image Name="img" Height="auto" Width="auto" Source="/WPF_Onward_Designer;component/Images/param.png" />
                                        <TextBlock Text="Paramètrage" Margin="4,0,0,0" VerticalAlignment="Center" />
                                    </StackPanel>
                            </TabItem.Header>
                            <Grid/>
                        </TabItem>
    ...
    et puis avec visual studio je lui dis de générer l'évènement et ça me donne :
    Code vb.net : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Private Sub M_Param_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs)
            Me.LabDivers.Content = "Paramètrage"
        End Sub

    Merci pour votre aide !

  2. #2
    Membre chevronné
    Avatar de m-mas
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2003
    Messages
    576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2003
    Messages : 576
    Par défaut
    j'ai trouvé une solution que je n'aime pas beaucoup est de tout mettre dans mon espace de travail et de jouer sur la visibilité de mes contrôles utilisateur en fonction du module sélectionné en utilisant l'évènement "RequestBringIntoView"

  3. #3
    Membre éclairé Avatar de koyot3
    Inscrit en
    Avril 2007
    Messages
    693
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 693
    Par défaut
    Salut,

    Pour ton problème je passerais par un datatemplate et un container qui chargera automatiquement le contenu...

    En gros tu définis tes usercontrols (un pour l'item courrier, un pour l'agenda et tout les autres nécessaire pour faire ton Outlook "maison")
    Tu les références comme datatemplate dans les ressources de ta page

    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <Window.Resources>
    	<DataTemplate x:Key="uc1">
    		<local:UserControl1/>
    	</DataTemplate>
    	<DataTemplate x:Key="uc2">
    		<local:UserControl2/>
    	</DataTemplate>

    Et tu utilise un ContentControl pour les afficher en fonction de la valeur de l'index sélectionné sur ton tabControl :

    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <ContentControl>
    <ContentControl.Style>
    	<Style TargetType="ContentControl">
    		<Style.Triggers>
    			<DataTrigger Binding="{Binding SelectedIndex, ElementName=tabcontrol}" Value="0">
    				<Setter Property="ContentTemplate" Value="{StaticResource uc1}"/>
    			</DataTrigger>
    			<DataTrigger Binding="{Binding SelectedIndex, ElementName=tabcontrol}" Value="1">
    				<Setter Property="ContentTemplate" Value="{StaticResource uc2}"/>
    			</DataTrigger>
    		</Style.Triggers>
    	</Style>
    </ContentControl.Style>
    </ContentControl>

    Et normalement tu n'as pas besoin de gérer l'évènement click sur tes tab...

    Bonne soirée

  4. #4
    Membre chevronné
    Avatar de m-mas
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2003
    Messages
    576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2003
    Messages : 576
    Par défaut
    Merci Koyot3, je vais essayer ceci et vous dire

Discussions similaires

  1. [XL-2003] Modules de classe événement click sur OLEObjects
    Par pijaku dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 01/08/2011, 09h25
  2. l'évènement click sur une ligne de datagrid
    Par ayouta.gfs dans le forum C#
    Réponses: 11
    Dernier message: 25/05/2011, 04h22
  3. [2.0] Générer un événement click sur un textbox
    Par dieuzorro dans le forum Général Dotnet
    Réponses: 3
    Dernier message: 27/02/2008, 22h26
  4. Problème d'évènement click sur mon onglets
    Par bitou11 dans le forum Access
    Réponses: 7
    Dernier message: 03/08/2006, 00h24
  5. événement Click sur Check et option button ??
    Par badsepuku dans le forum IHM
    Réponses: 3
    Dernier message: 09/02/2006, 13h51

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