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 and Drop (et réordonner) vers un ListBox bindé à un XML


Sujet :

Windows Presentation Foundation

  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 Drag and Drop (et réordonner) vers un ListBox bindé à un XML
    Bonjour, est ce que vous pourriez m'aider avec ce scénario:

    Sur la scène, 2 ListBox et 1 TextBox

    1. Le premier listbox contient tous les éléments disponibles. Cette liste est groupée par 'Type' et sa source est un XML bindé (lecture seul)
    2. Le second listbox contient les éléments que l'utilisateur a glissé/déposé depuis la listbox#1 et cette liste doit être lue au démarrage puis sauvée quand on quitte.
    3. Le textbox contient le détail de l'élément actuellement sélectionné dans la listbox#2

    Nom : snap.gif
Affichages : 257
Taille : 10,2 Ko

    Mes connaissances - et ma recherche sur internet - m'ont permis de pouvoir ecécuter le binding, le groupement avec un expander et (peut-être) la première étape du 'drag' (à vérifier)..mais je suis bloqué sur le 'drop' et le réordonnement de la listbox#2..et ensuite sauver en xml!!

    Pourriez-vous svp m'aider? (même en C#, j'essayerai de traduire). Je joint une image ainsi que le projet (avec les fichiers XML à l'intérieur) pour vous aidez à m'aider!!

    Le code XAML
    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    <Window x:Class="MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:scm="clr-namespace:System.ComponentModel;assembly=WindowsBase"
        xmlns:dat="clr-namespace:System.Windows.Data;assembly=PresentationFramework"
        Title="MainWindow" Height="400" Width="525">
        <Grid>
            <Grid.Resources>
                <DataTemplate x:Key="Resource3">
                    <Label Content="{Binding XPath=Name}"/>
                </DataTemplate>
                <Style x:Key="ListBoxItemStyle1" TargetType="{x:Type ListBoxItem}">
                    <EventSetter Event="ListBoxItem.PreviewMouseLeftButtonDown" Handler="s_PreviewMouseLeftButtonDown" />
                </Style>
                <Style x:Key="ListBoxItemStyle2" TargetType="{x:Type ListBoxItem}">
                    <Setter Property="AllowDrop" Value="true"/>
                    <EventSetter Event="ListBoxItem.PreviewMouseLeftButtonDown" Handler="s_PreviewMouseLeftButtonDown" />
                    <EventSetter Event="ListBoxItem.Drop" Handler="listbox_Drop"/>
                </Style>
            </Grid.Resources>
            <Grid Name="Grid01">
                <Grid.Resources>
                    <CollectionViewSource x:Key="cvsSystems" Source="{Binding XPath=System}">
                        <CollectionViewSource.SortDescriptions>
                            <scm:SortDescription PropertyName="@Type"/>
                            <scm:SortDescription PropertyName="Name"/>
                        </CollectionViewSource.SortDescriptions>
                        <CollectionViewSource.GroupDescriptions>
                            <dat:PropertyGroupDescription  PropertyName="@Type"/>
                        </CollectionViewSource.GroupDescriptions>
                    </CollectionViewSource>
                </Grid.Resources>
                <ListBox ItemsSource="{Binding Source={StaticResource cvsSystems}}" ItemTemplate="{StaticResource Resource3}" SelectedValuePath="Name" IsSynchronizedWithCurrentItem="True" HorizontalAlignment="Left" x:Name="ListBox1" Width="160" ItemContainerStyle="{DynamicResource ListBoxItemStyle1}" Margin="0,0,0,0">
                    <ListBox.GroupStyle>
                        <GroupStyle>
                            <GroupStyle.ContainerStyle>
                                <Style TargetType="{x:Type GroupItem}">
                                    <Setter Property="Template">
                                        <Setter.Value>
                                            <ControlTemplate>
                                                <Expander Header="{Binding Name}" IsExpanded="True">
                                                    <ItemsPresenter />
                                                </Expander>
                                            </ControlTemplate>
                                        </Setter.Value>
                                    </Setter>
                                </Style>
                            </GroupStyle.ContainerStyle>
                        </GroupStyle>
                    </ListBox.GroupStyle>
                </ListBox>
            </Grid>
            <Grid Name="Grid02">
                <Grid.Resources>
                    <CollectionViewSource x:Key="cvsPreferences" Source="{Binding XPath=System}">
                        <CollectionViewSource.SortDescriptions>
                            <scm:SortDescription PropertyName="@Type"/>
                            <scm:SortDescription PropertyName="Name"/>
                        </CollectionViewSource.SortDescriptions>
                        <CollectionViewSource.GroupDescriptions>
                            <dat:PropertyGroupDescription  PropertyName="@Type"/>
                        </CollectionViewSource.GroupDescriptions>
                    </CollectionViewSource>
                </Grid.Resources>
                <ListBox ItemsSource="{Binding Source={StaticResource cvsPreferences}}" ItemTemplate="{StaticResource Resource3}" SelectedValuePath="Name" IsSynchronizedWithCurrentItem="True" HorizontalAlignment="Left" x:Name="ListBox2" Width="160" ItemContainerStyle="{DynamicResource ListBoxItemStyle2}" Margin="170,0,0,0"/>
                <Button Content="Save" Height="23" HorizontalAlignment="Left" Margin="385,320,0,0" Name="Button1" VerticalAlignment="Top" Width="75" />
            </Grid>
            <TextBox DataContext="{Binding SelectedItem, ElementName=ListBox2}" Text="{Binding UpdateSourceTrigger=PropertyChanged, XPath=Detail}" Margin="340,0,0,0" x:Name="TextBox1" HorizontalAlignment="Left" VerticalAlignment="Top" Width="160"/>
        </Grid>
    </Window>

    Le code VB

    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
    Imports System.IO
    Imports System.Xml
    Class MainWindow
        Dim sysdata As XmlDocument = New XmlDocument()
        Dim prefdata As XmlDocument = New XmlDocument()
        Dim systemdata As XmlDataProvider = New XmlDataProvider()
        Dim preferencedata As XmlDataProvider = New XmlDataProvider()
        Private Sub MainWindow_Loaded(ByVal sender As Object, ByVal e As System.Windows.RoutedEventArgs) Handles Me.Loaded
            sysdata.Load(System.AppDomain.CurrentDomain.BaseDirectory & "Systems.xml")
            prefdata.Load(System.AppDomain.CurrentDomain.BaseDirectory & "Preferences.xml")
            systemdata.Document = sysdata
            preferencedata.Document = prefdata
            systemdata.XPath = "Systems"
            preferencedata.XPath = "Systems"
            Grid01.DataContext = systemdata
            Grid02.DataContext = preferencedata
        End Sub
     
        Private Sub s_PreviewMouseLeftButtonDown(ByVal sender As Object, ByVal e As MouseButtonEventArgs)
            If TypeOf sender Is ListBoxItem Then
                Dim draggedItem As ListBoxItem = TryCast(sender, ListBoxItem)
                DragDrop.DoDragDrop(draggedItem, draggedItem.DataContext, DragDropEffects.Copy)
                draggedItem.IsSelected = True
            End If
        End Sub
     
        Private Sub listbox_Drop(ByVal sender As Object, ByVal e As DragEventArgs)
     
        End Sub
     
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles Button1.Click
            preferencedata.Document.Save(System.AppDomain.CurrentDomain.BaseDirectory & "Preferences.xml")
        End Sub
    End Class
    Fichiers attachés Fichiers attachés

  2. #2
    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
    C'est si compliqué que cela ?

Discussions similaires

  1. Drag and drop de listview vers zone de texte web
    Par poupoune1974 dans le forum Windows Presentation Foundation
    Réponses: 9
    Dernier message: 17/02/2010, 17h52
  2. [WD14] Drag And Drop table hiérarchique vers table
    Par Thanor dans le forum WinDev
    Réponses: 6
    Dernier message: 24/11/2009, 12h20
  3. Drag And Drop: Win32(MFC) vers WPF
    Par sacoum dans le forum Windows Presentation Foundation
    Réponses: 3
    Dernier message: 17/06/2008, 10h29
  4. Drag and Drop en WPF entre une listbox et un fichier
    Par zeOliver dans le forum Windows Presentation Foundation
    Réponses: 5
    Dernier message: 17/04/2007, 10h56
  5. Faire un drag and drop depuis IE vers un TListView
    Par ALEX77 dans le forum Composants VCL
    Réponses: 8
    Dernier message: 11/11/2004, 15h27

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