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

VB.NET Discussion :

[WPF] Drag d'un ListView Item > la sélection sur ce ListView est alors plus chaotique


Sujet :

VB.NET

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    158
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2006
    Messages : 158
    Points : 41
    Points
    41
    Par défaut [WPF] Drag d'un ListView Item > la sélection sur ce ListView est alors plus chaotique
    Bonjour,

    Dans le code suivant, l'utilisateur peut glisser un 'ListView Item' vers le navigateur WEB, la page correspondante s'ouvre alors.

    Cela marche..mais je ne suis pas sur que je m'y sois pris de la meilleure façon car depuis que le drag est rendu possible depuis ce ListView la sélection d'un élément est plus chaotique (c-à-d qu'il faut très souvent s'y reprendre à plusieurs fois pour SELECTIONNER un élément).

    Pourriez-vous m'aider svp? Merci !!

    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
    <Window x:Class="MainWindow"
        xmlns:local="clr-namespace:WpfApplication1"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
     
        <Grid>
            <ListView Name="PersonListView">
                <ListView.ItemContainerStyle>
                    <Style TargetType="ListViewItem">
                        <EventSetter Event="ListViewItem.PreviewMouseLeftButtonDown" Handler="PersonListView_MouseLeftButtonDown" />
                    </Style>
                </ListView.ItemContainerStyle>
                <ListView.View>
                    <GridView >
                        <GridViewColumn DisplayMemberBinding="{Binding Url}" Width="300">
                            <GridViewColumnHeader>Url</GridViewColumnHeader>
                        </GridViewColumn>
                        <GridViewColumn DisplayMemberBinding="{Binding Name}" Width="100">
                            <GridViewColumnHeader>Name</GridViewColumnHeader>
                        </GridViewColumn>
                    </GridView>
                </ListView.View>
            </ListView>
        </Grid>
    </Window>
    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    Class MainWindow
        Private Sub MainWindow_Loaded(sender As Object, e As System.Windows.RoutedEventArgs) Handles Me.Loaded
            Dim personList As New List(Of Person)()
            personList.Add(New Person() With {.Url = "http://www.apple.com", .Name = "Apple"})
            personList.Add(New Person() With {.Url = "http://www.hp.com", .Name = "HP"})
            personList.Add(New Person() With {.Url = "http://www.asus.com", .Name = "Asus"})
            PersonListView.ItemsSource = personList
        End Sub
        Private Sub PersonListView_MouseLeftButtonDown(sender As Object, e As System.Windows.Input.MouseButtonEventArgs)
            If TypeOf sender Is ListViewItem Then
                Dim o1 As Person = TryCast(sender.DataContext, Person)
                If o1 IsNot Nothing Then
                    Dim url As String = o1.Url
                    Dim dataObject As New DataObject(DataFormats.Text, url)
                    DragDrop.DoDragDrop(Me, dataObject, DragDropEffects.Copy)
                End If
            End If
        End Sub
    End Class
    Public Class Person
        Public Property Url() As String
            Get
                Return m_Id
            End Get
            Set(value As String)
                m_Id = value
            End Set
        End Property
        Private m_Id As String
        Public Property Name() As String
            Get
                Return m_Name
            End Get
            Set(value As String)
                m_Name = Value
            End Set
        End Property
        Private m_Name As String
    End Class

  2. #2
    Membre éprouvé Avatar de worm83
    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Février 2010
    Messages
    459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2010
    Messages : 459
    Points : 1 118
    Points
    1 118
    Par défaut
    C'est le soucis avec les Template et style en WPF, il faut que tu redéfinisse l'arbre complet de l'élément.
    Pour cela dans une nouvelle fenêtre WPF : tu glisse un ListView par exemple, tu fait click droit dessus -> Modifier le Modèle -W Modifier une copie.
    Le template complet de l'élément va être redéfini dans la partie XAML, tu la copie et modifie ou ajoute les éléments voulu.
    Cela devrait régler tes soucis.
    (Après relecture j’avoue que mon explication n'est pas très claire, mais j'espère que tu comprendra, sinon je prendrais plus de temps pour te l'expliquer).
    "Le train de tes injures roule sur le rail de mon indifférence."

    "Monde de merde !!"

    Georges Abitbol.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    158
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2006
    Messages : 158
    Points : 41
    Points
    41
    Par défaut
    worm83,

    Merci pour ta réponse! Puisque tu me le proposes si gentiment je t'avoue que cela m'intéresserais que tu m'expliques plus en profondeur et même, si possible, de voir cela avec du code pour comprendre en quoi le fait de travailler sur une copie du template changerait le comportement du drag et de la sélection de l'item!?

    Merci!!

Discussions similaires

  1. Mes debuts en WPF - Listview .item ?
    Par troxsa dans le forum Windows Presentation Foundation
    Réponses: 3
    Dernier message: 27/03/2009, 17h30
  2. [C#] Listview item avec chaine tronquée
    Par heavydrinker dans le forum Windows Forms
    Réponses: 1
    Dernier message: 18/10/2006, 15h46
  3. Réponses: 5
    Dernier message: 12/08/2006, 20h35
  4. Réponses: 5
    Dernier message: 08/06/2006, 16h11
  5. ListView->Items->Clear() !!! Qques probl de perf
    Par Nicolas_a69 dans le forum C++Builder
    Réponses: 3
    Dernier message: 30/08/2002, 11h49

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