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 :

Drag & Drop DatagridColumnHeader


Sujet :

Windows Presentation Foundation

  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 Drag & Drop DatagridColumnHeader
    Bonjour,
    J'ai dans mon application un Datagrid qui permet de faire du Drag & Drop d'entête de colonne pour les ordonner (laisser la bonne propriété à True, ça va je m'en suis sorti).
    Maintenant, j'aimerais pouvoir faire du Drag & Drop de DatagridColumnHeader pour pouvoir les déposer dans un panel externe au grid.
    Mon problème est que je n'arrive pas à accéder aux DatagridColumnHeader dans le xaml pour pouvoir câbler le MouseMove.
    Quelqu'un voit comment faire?
    Merci d'avance

  2. #2
    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
    J'ai bien réussi à accéder à l'événement MouseMove de mon entête de colonne en configurant un style (propriété du grid ColumnHeaderStyle), mais je n'arrive pas à faire mon Drag & Drop, je passe bien par le MouseMose et je fais bien le SetData mais je ne passe jamais par le DragOver ni par le Drop de mon objet cible...

  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
    Pour info j'ai utilisé le blog de Thomas Lebrun pour mettre en place le Drag and Drop
    Voici mon code côté source:
    Le xaml:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <Style x:Key="ColumnHeaderStyle" TargetType="{x:Type tk:DataGridColumnHeader}">
                <Setter Property="ContentTemplate">
                    <Setter.Value>
                        <DataTemplate>
                            <StackPanel>
                                <TextBlock Text="{Binding}" MouseMove="MouseMoveMethode"/>
                            </StackPanel>
                        </DataTemplate>
                    </Setter.Value>
                </Setter>
            </Style>
    Le code behind:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    private void MouseMoveMethode(object sender, MouseEventArgs e)
            {
                if (e.LeftButton == MouseButtonState.Pressed)
                {
                    DragDropEffects effects;
                    DataObject obj = new DataObject();
                    obj.SetData(typeof(string), (sender as TextBlock).Text);
                    effects = DragDrop.DoDragDrop((sender as TextBlock), obj, DragDropEffects.Copy);
                }
            }
    Le code côté cible:
    Le xaml:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <DockPanel Grid.Row="0" Background="Aqua" AllowDrop="True" DragOver="DragOverMethode" Drop="DropMethode">
    Le code behind:
    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
     private void DragOverMethode(object sender, DragEventArgs e)
            {
                if (e.Data.GetDataPresent(typeof(string)))
                {
                    e.Effects = DragDropEffects.Copy;
                }
                else
                {
                    e.Effects = DragDropEffects.None;
                }
            }
     
     
            private void DropMethode(object sender, DragEventArgs e)
            {
                if (e.Data.GetDataPresent(typeof(string)))
                {
                    e.Effects = DragDropEffects.Copy;
                    string uri = (string)e.Data.GetData(typeof(string));
                    (sender as DockPanel).Children.Add(new TextBlock { Text = uri });
                }
                else
                {
                    e.Effects = DragDropEffects.None;
                }
            }
    Mais ça ne fonctionne pas, je passe bien dans le MouseMove mais jamais dans le Drop ni dans le DragOver.
    Des idées?

  4. #4
    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
    Personne ne voit d'où vient le problème?
    Il manque des informations?

  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
    Toujours aucune réponse à m'apporter????
    Help me SVP....

Discussions similaires

  1. Drag and drop "de l'extérieur"
    Par Invité dans le forum C++Builder
    Réponses: 12
    Dernier message: 31/03/2020, 10h10
  2. [JSP][DRAG AND DROP]
    Par hamed dans le forum Servlets/JSP
    Réponses: 7
    Dernier message: 23/01/2004, 17h36
  3. drag and drop
    Par jujuesteban dans le forum Composants VCL
    Réponses: 5
    Dernier message: 20/06/2003, 09h23

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