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 :

Réaliser une barre similaire à la barre des tâches de Seven


Sujet :

Windows Presentation Foundation

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    537
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 537
    Par défaut Réaliser une barre similaire à la barre des tâches de Seven
    Bonjour à tous,

    Je suis en train de faire quelques tests pour maitriser le drag and drop.
    Et j'en arrive à vouloir réaliser un système similaire à la barre des tâches de Seven.

    Mais j'hésite quel est selon vous le meilleur moyen?
    Une listview? Un stackpanel ou une grid dans un scrollview?

    Je vais essayer de partir sur la gridview dans le scrollview mais je ne vois pas du tout quelle serait la meilleur solution et je vous demande votre avis.

    Merci.

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    537
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 537
    Par défaut
    j'ai créé mes colonnes de mon grid de cette façon :

    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    ColumnDefinition aCol = new ColumnDefinition();
                        aCol.Tag = i;
                        aCol.AllowDrop = true;
                        aCol.Drop += new DragEventHandler(aCol_Drop);
                        theGrid.ColumnDefinitions.Add(aCol);

    Néanmoins lorsque je drop un de mes objets la fonction aCol_Drop n'est jamais appelée.

    Edit :
    Visiblement les événements comme Drop, PreviewDrop ou encore MouseEnter ne sont pas appelés.

    Je récupère la colonne source via le previewmouseleftdown de la grid :
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    private void theStack_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
            {
                startPoint = e.GetPosition(null);
     
                CurrentCol = (int)Math.Floor(startPoint.X / 200);
            }

    Malheureusement le previewmouseleftup de la grid est appelé après le drop.
    Et via :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Point aPosition = Mouse.GetPosition(theGrid);
    Ça me donne des coordonnées que je n'arrive aps à utiliser.

    Bref je n'arrive pas à savoir sur quel colonne de mon grid je drop.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    537
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 537
    Par défaut
    Bon j'arrive à réalisé ce que je veux en m'inspirant de ce lien :
    ICI

    Je dois quand même créer dans chaque colonne une grid ce qui me parait quelque peu embêtant surtout quand colmundefinitions a les évènements de drop nécessaires.

    Donc ça marche.

    Je laisse le thread en non résolu jusqu'à demain si jamais quelqu'un a une idée magique.

    Edit : en faite je me suis un peu enflammé, j'arrive juste à intervertir deux éléments mais le comportement est différents de celui de la barre de tâche de seven, j'en viens à me demander si le drag and drop est la solution

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 210
    Par défaut
    Salut,

    Dans ton premier post, tu énonces plusieurs pistes :
    Citation Envoyé par NejNej
    Mais j'hésite quel est selon vous le meilleur moyen?
    Une listview? Un stackpanel ou une grid dans un scrollview?
    Sans aller jusqu'à la ListView, je me dis que pour ton besoin la ListBox avec un ItemPanel adapté serait une bonne piste.
    J'ai retrouvé ce lien qui est sympa (où tu as du drag & drop d'une ListBox vers une ListView et la possibilité de réordonner à l'intérieure de chacun des contrôles) :
    http://bea.stollnitz.com/blog/?p=53

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    537
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 537
    Par défaut
    Merci Binoo.

    J'avais déjà vu ce lien qui m'avais l'air intéressant mais finalement j'ai réussi à quelque peu reproduire le comportement en utilisant un canvas qui contient un scrollviewer qui contient une grid.

    Pour chacune de mes images je crée une colonne dans ma grid.
    Puis lors d'un clique je passe l'image cliquée dans le canvas.
    Ensuite lors du move je fais suivre l'image par rapport à la souris, et je vois s'il faut passé un des éléments sur la colonne vide.

    Ça reproduit la fonctionnement de la barre des tâches à une chose près c'est que le changement de colonne donne un effet un peu brusque par rapport au glissement de la taskbar de seven.

Discussions similaires

  1. Réponses: 4
    Dernier message: 07/01/2006, 20h10
  2. Réponses: 7
    Dernier message: 27/10/2005, 15h24
  3. Reduire une fenetre / barre des tâches
    Par carnage_59 dans le forum Interfaces Graphiques en Java
    Réponses: 4
    Dernier message: 03/10/2005, 21h07
  4. Réponses: 2
    Dernier message: 25/08/2005, 06h44
  5. comment cacher une application de la liste des tâches ?
    Par Laurent Dardenne dans le forum Windows
    Réponses: 2
    Dernier message: 22/12/2004, 18h12

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