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 :

DXTreeList : Ajouter menu contextuel et récupérer item clicé (pour suppression)


Sujet :

Windows Presentation Foundation

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Décembre 2011
    Messages : 19
    Points : 15
    Points
    15
    Par défaut DXTreeList : Ajouter menu contextuel et récupérer item clicé (pour suppression)
    Bonjour,

    Voilà mon problème ; j'ai une DXTreeListView avec les data liés à une liste :

    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
    <dxg:TreeListControl Name="treeListControl1" Margin="12,163,756,12">
                <dxg:TreeListControl.Columns>
                    <dxg:TreeListColumn FieldName="name" Header="testHeader"/>
                </dxg:TreeListControl.Columns>
                <dxg:TreeListControl.View>
                    <dxg:TreeListView Name="treeListView1"
                                      KeyFieldName="id" 
                                      ParentFieldName="parentId" 
                                      NavigationStyle="Row"
                                      ShowIndicator="False"
                                      AllowResizing="False"
                                      ShowVerticalLines="False"
                                      ShowHorizontalLines="False"  
                                      FocusedRowChanged="treeListView1_FocusedRowChanged" MouseUp="treeListView1_MouseUp" />
                </dxg:TreeListControl.View>
            </dxg:TreeListControl>

    Ma liste de data qui est un ensemble de "ProjectTreeItem" :

    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public static class ProjectTreeData
        {
            public static List<ProjectTreeItem> itemsList = new List<ProjectTreeItem>();
            public static List<ProjectTreeItem> GetItems()
            {
                return itemsList;
            }
    }

    Et je lie les données à la DXTreeView comme ceci :

    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    treeListControl1.ItemsSource = ProjectTreeData.GetItems();

    Je cherche à permettre la suppression d'un Item dans la DXTreeList par un clic droit sur un élément qui ne ferait pas perdre le focus sur l'élément sélectionné. Ce clic droit ouvre un menu contextuel avec l'option Supprimer. Une fois l'événement appelé, il me faut récupérer l'Item ciblé afin de le supprimer de la liste et de rafraichir la DXTreeList.

    Je me suis servi de ce tuto concernant le WinForms : http://www.devexpress.com/Support/Center/kb/p/A915.aspx

    J'arrive à appeler l'événement mouseUp, mais une fois dans l'évènement, je n'arrive pas à récupérer l'item qui à subit l'événement (l'item à supprimer) :

    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     Point pt = tree.PointToClient(MousePosition);
     TreeListHitInfo info = tree.CalcHitInfo(pt);

    Merci d'avance pour toute aide.

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

    Essaie avec l'event PreviewMouseDown.
    Exemple pas forcément très propre :

    Code c# : 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
    //stockage de l'ancien index
    private int _oldNodeIndex;
     
    private void treeListView1_PreviewMouseDown_1(object sender, MouseButtonEventArgs e)
    {
    	TreeListView tree = sender as TreeListView;
    	int index;
     
    	if (e.ChangedButton == MouseButton.Right)
    	{
    		//si click doir, tu récupère ton noeud et tu réaffecte le noeud sélectionné sur l'ancien
    		//sinon le click droit change le row sélectionné
    		index = tree.GetRowHandleByMouseEventArgs(e);
    		TreeListNode n = tree.GetNodeByRowHandle(index);		
    		tree.FocusedRowHandle = _oldNodeIndex;
    	}
    	else
    	{
    		//si pas en click droit, tu récupères le row sélectionné pour le stocker
    		index = tree.GetRowHandleByMouseEventArgs(e);
    		_oldNodeIndex = index;		
    	}
    }

    En espérant t'avoir aidé

    @+

Discussions similaires

  1. Réponses: 2
    Dernier message: 21/02/2010, 04h44
  2. [AC-2007] Personnaliser le menu contextuel issu d'un clic droit
    Par al_bert dans le forum IHM
    Réponses: 2
    Dernier message: 06/08/2009, 21h47
  3. [Gridview] Menu Contextuel sur l'item
    Par anthyme dans le forum Windows Presentation Foundation
    Réponses: 4
    Dernier message: 08/07/2008, 13h50
  4. définir un menu contextuel sur les items d'un treeview
    Par maa dans le forum Windows Presentation Foundation
    Réponses: 4
    Dernier message: 05/05/2008, 19h51
  5. [WSS3] Modifier menu contextuel d'un item de liste
    Par vds2302 dans le forum SharePoint
    Réponses: 1
    Dernier message: 07/11/2007, 15h38

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