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

Silverlight Discussion :

Créer un composant dropdown button avec grille 2 colonnes


Sujet :

Silverlight

  1. #1
    Membre éclairé Avatar de Rodrigue
    Inscrit en
    Août 2002
    Messages
    487
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 487
    Par défaut Créer un composant dropdown button avec grille 2 colonnes
    Bonjour,

    Je souhaiterais créer un composant de type "dropdown button" qui possèderait les caractéristiques suivantes:
    - à l'état de repos, l'info affichée n'est qu'un texte
    - lorsqu'on clique dessus une liste d'information à sélectionner possédant 2 colonnes est affichée. Un seul élément peut être sélectionné à la fois
    - le "dropdown button", l'extérieur du bouton ne s'affiche que lorsqu'on passe la souris dans sa zone.

    J'ai déjà développé d'autres composants mais jamais en "silverlight".
    Je connais bien les différents évènements à gérer (mouseenter, mouseleave, etc.) Je me demande surtout comment faire le popup...

    Pourriez-vous m'aider svp?

  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
    Tu peux déjà regarder ici, pour commencer: http://broux.developpez.com/articles...s-silverlight/

  3. #3
    Membre Expert
    Avatar de Samuel Blanchard
    Homme Profil pro
    Expert .NET
    Inscrit en
    Février 2010
    Messages
    1 504
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Expert .NET

    Informations forums :
    Inscription : Février 2010
    Messages : 1 504
    Par défaut
    Bonjour,

    Est-ce d'un SplitButton dont tu parles ?

    http://blogs.msdn.com/b/delay/archiv...f-support.aspx

    Si ce n'est pas le cas tu as quand même les sources qui montrent comment utiliser un MenuContext.

  4. #4
    Membre éclairé Avatar de Rodrigue
    Inscrit en
    Août 2002
    Messages
    487
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 487
    Par défaut
    Presque . Même si la lecture du code est assez intéressante, je n'arrive pas le compiler! En effet, le compilo me dit:
    Le type ou le nom d'espace de noms 'ContextMenu' est introuvable (une directive using ou une référence d'assembly est-elle manquante*?) C:\Documents and Settings\xxx\Bureau\splitbutton\SplitButton\SplitButton.cs 32 17 SplitButton
    le contextmenu est défini dans system.windows.forms
    Je ne peux pas l'ajouter aux références de mon projet.

    Peut-être est-ce parce que j'utilise visual 2010 web express ?

    Merci!

    Citation Envoyé par Samoteph Voir le message
    Bonjour,

    Est-ce d'un SplitButton dont tu parles ?

    http://blogs.msdn.com/b/delay/archiv...f-support.aspx

    Si ce n'est pas le cas tu as quand même les sources qui montrent comment utiliser un MenuContext.

  5. #5
    Membre éclairé Avatar de Rodrigue
    Inscrit en
    Août 2002
    Messages
    487
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 487
    Par défaut
    Faut-il que j'installe le Silverlight tookit?
    http://silverlight.codeplex.com/

    N'est-ce pas dédié aux smartphones?

  6. #6
    Membre éclairé Avatar de Rodrigue
    Inscrit en
    Août 2002
    Messages
    487
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 487
    Par défaut
    Je confirme ça fonctionne. Il fallait bel et bien installer le "silverlight toolkit april 2010" sur codeplex.
    Si quelqu'un veut observer les contrôles et les thèmes (11) disponibles, il peut aller ici:
    http://silverlight.net/content/sampl...n/default.html

    Bon, je ne vous lâche pas! Je vais essayer d'implémenter mon contrôle

  7. #7
    Membre éclairé Avatar de Rodrigue
    Inscrit en
    Août 2002
    Messages
    487
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 487
    Par défaut
    Bon désolé pour cette suite d'auto-réponse (peut-être que ça en aidera d'autres...) mais en fait xaml c'est génial!

    Donc, j'ai créé les fameux composants splitbutton et menubutton et en fait, il n'y a pas vraiment besoin de les modifier (enfin si mais j'y reviendrai à la fin). Il suffit juste d'associer à l'objet ButtonMenuItemsSource tout ce que l'on souhaite: image, itemmenu, textbox, treeview, etc. et ce même mélangé!!!
    Voici un petit exemple:
    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
    <splitButton:MenuButton Canvas.Left="179" Canvas.Top="78" Content="Button" Height="52" Name="menuButton1" Width="103">
                <splitButton:MenuButton.ButtonMenuItemsSource>
                    <Image Canvas.Left="86" Canvas.Top="220" Height="99" Name="image1" Stretch="Uniform" Width="136" Source="/SplitButtonSample;component/Images/9DE0039E.jpg" />
                    <sdk:TreeView Canvas.Left="61" Canvas.Top="260" Height="117" Name="treeView1" Width="130">
                        <sdk:TreeViewItem Header="a">
                            <sdk:TreeViewItem Header="1" />
                            <sdk:TreeViewItem Header="2" />
                        </sdk:TreeViewItem>
                        <sdk:TreeViewItem Header="b">
                            <sdk:TreeViewItem Header="alpha" />
                        </sdk:TreeViewItem>
                        <sdk:TreeViewItem Header="c" />
                    </sdk:TreeView>
                    <Slider Canvas.Left="91" Canvas.Top="251" Height="26" Name="slider1" Width="185" />
                </splitButton:MenuButton.ButtonMenuItemsSource>
            </splitButton:MenuButton>
            <splitButton:SplitButton Canvas.Left="69" Canvas.Top="168" Content="Button" Height="27" Name="splitButton1" Width="130" />
    J'affiche dans le contextmenu, une image, un treeview et un slider... Pour moi qui ait commencé à la dur, je peux vous dire que c'est vraiment facile !

    Maintenant, oui je sais j'en demande trop, serait-il possible que lorsque ma souris n'est pas au-dessus du Button, le contour de celui-ci ne s'affiche pas? Il n'y aurait que le texte d'affiché...

    Merci

  8. #8
    Membre Expert
    Avatar de Samuel Blanchard
    Homme Profil pro
    Expert .NET
    Inscrit en
    Février 2010
    Messages
    1 504
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Expert .NET

    Informations forums :
    Inscription : Février 2010
    Messages : 1 504
    Par défaut
    Il faut redefinir le Template de ton SplitButton et lui rendre son bord invisible lors du passage de la souris. Vu que tu as les sources du SplitButton ça devrait pas être trop compliqué

  9. #9
    Expert confirmé
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Par défaut
    Citation Envoyé par Samoteph Voir le message
    Il faut redefinir le Template de ton SplitButton et lui rendre son bord invisible lors du passage de la souris. Vu que tu as les sources du SplitButton ça devrait pas être trop compliqué
    Je rajouterai : En utilisant les VisualStates.

  10. #10
    Membre éclairé Avatar de Rodrigue
    Inscrit en
    Août 2002
    Messages
    487
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 487
    Par défaut
    Désolé, j'ai essayé de me servir des visualstates mais sans succès

    J'ai déclaré au début du composant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [TemplateVisualState(Name = "VSMouseLeave", GroupName = "ValueStates")]
    Dans ma fonction OnMouseLeave, j'ai ajouté l'appel au VisualStateManager:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    private void SplitElement_MouseLeave(object sender, MouseEventArgs e)
            {
                IsMouseOverSplitElement = false;
     
                VisualStateManager.GoToState((SplitButton)sender, "VSMouseLeave", true); 
            }
    Je câle dans le xaml. Je ne sais pas vraiment ce que je dois déclarer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <VisualState x:Name="VSMouseLeave">
                                        <Storyboard>
     
                                        </Storyboard>
                                    </VisualState>
    J'ai essayé de m'appuyer sur le code suivant: http://samples.msdn.microsoft.com/si...urcewindow.htm

  11. #11
    Membre éclairé Avatar de Rodrigue
    Inscrit en
    Août 2002
    Messages
    487
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 487
    Par défaut
    En fait j'ai rajouté au generic.xaml du composant, la section suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <VisualStateGroup x:Name="ValueStates">
                                    <VisualState x:Name="VSMouseLeave">
                                        <Storyboard>
                                            <DoubleAnimation Duration="0" Storyboard.TargetName="Background" Storyboard.TargetProperty="(Border.Background).(SolidColorBrush.Color)" To="#00FFFFFF"/>
                                        </Storyboard>
                                    </VisualState>
                                </VisualStateGroup>
    dans le visualstatemanager mais il semblerait que ça n'ait aucun effet

  12. #12
    Expert confirmé
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Par défaut
    Quel est le retour de la méthode GoToState (true ou false) ?

Discussions similaires

  1. Réponses: 1
    Dernier message: 26/04/2013, 09h47
  2. Créer et gérer les effets avec FX Composer
    Par Hoodyny dans le forum XNA/Monogame
    Réponses: 5
    Dernier message: 22/10/2009, 14h56
  3. Créer des composants personnalisés avec JBuilder 4
    Par mtaveau dans le forum JBuilder
    Réponses: 4
    Dernier message: 21/06/2006, 07h08
  4. Intercepter un Message Windows ? Créer un Composant Grille !
    Par TOTO32 dans le forum Composants VCL
    Réponses: 6
    Dernier message: 21/07/2004, 13h41

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