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écupérer une collection liée à une CollectionViewSource


Sujet :

Windows Presentation Foundation

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Étudiant
    Inscrit en
    Février 2007
    Messages
    202
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 202
    Par défaut Récupérer une collection liée à une CollectionViewSource
    Bonjour,

    Je souhaite effectuer une vue Maitre-Détail entre deux DataGrids.

    Pour cela, j'utilise une CollectionViewSource afin de connaître le SelectedItem.

    Voici le XAML correspondant au DataGrid "Maitre" et sa ressource :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <UserControl.Resources>
            <CollectionViewSource x:Key="masterSourceCVS" Source="{Binding Mode=TwoWay, Path=Sources}"/>
        </UserControl.Resources>
     
    <!-- Master -->
            <tk:DataGrid x:Name="dgSourceBlender" ItemsSource="{Binding Source={StaticResource masterSourceCVS}}" AutoGenerateColumns="False" AllowDrop="True" DragOver="dgSourceBlender_DragOver" Drop="dgSourceBlender_Drop">
                <tk:DataGrid.Columns>
                        <tk:DataGridTemplateColumn Header="Type"/>
                        <tk:DataGridTextColumn Header="Name" Binding="{Binding Path=Name}" IsReadOnly="True" Width="SizeToCells" MinWidth="50"/>
                    <tk:DataGridTextColumn Header="Parser" IsReadOnly="True" Width="SizeToCells" MinWidth="50"/>
                    <tk:DataGridTextColumn Header="Status" IsReadOnly="True" Width="SizeToCells" MinWidth="50"/>
                </tk:DataGrid.Columns>
            </tk:DataGrid>
    Pour l'instant tout va bien

    Mais j'ai besoin d'accèder à ma ObservableCollection _sources via ma property "Sources"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    private ObservableCollection<Source> _sources;
     
            public ObservableCollection<Source> Sources {
                get { return _sources; }
                set { _sources = value; }
            }
    Cette ObservableCollection est associée à ma CollectionViewSource "masterSourceCVS" afin d'y ajouter des Objects lors d'un Drag&Drop qui s'effectue dans 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
    private void dgSourceBlender_Drop(object sender, DragEventArgs e) {
                //Drag & Drop form windows exlorer
                string[] fileNames = e.Data.GetData(DataFormats.FileDrop, true) as string[];
     
                foreach (string fileName in fileNames) {
                    Uri uri = new Uri(fileName, UriKind.RelativeOrAbsolute);
     
    //Ajout des ojbects de type Source lors du Drop dans mon DataGrid
    ((ObservableCollection<Source>)dgSourceBlender.ItemsSource).Add(new Source(uri.ToString(), "type", "path"));
                }
     
    ....
    L'opération fonctionnait bien sans la CollectionViewSource :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <tk:DataGrid x:Name="dgSourceBlender" ItemsSource="{Binding Mode=TwoWay, Path=Sources}" AutoGenerateColumns="False" AllowDrop="True" DragOver="dgSourceBlender_DragOver" Drop="dgSourceBlender_Drop">
    Donc si je me trompe pas, j'ai juste besoin de récupérer ma ObservableCollection "Sources" gâce à l'ItemSource à partir de ma CollectionViewSource.

    Mais comment faire ? That is the question

    Merci

  2. #2
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Par défaut
    Pkoi ne pas juste faire un this.Sources.Add(...) ?

    Sinon, si tu accèdes aux ressources, tu peux accéder à ta CVS et dessus, tu as une propriété Source qui correspond à la source de ta CVS

  3. #3
    Membre confirmé
    Étudiant
    Inscrit en
    Février 2007
    Messages
    202
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 202
    Par défaut
    Pour ceux que cela intéresse, ca donne ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    CollectionViewSource cvs = Resources["masterSourceCVS"] as CollectionViewSource;
                    ((ObservableCollection<Source>)cvs.Source).Add(new Source(uri.ToString(), "type", "path"));
                    dgSourceBlender.ItemsSource = cvs.Source as ObservableCollection<Source>;
    Si je n'ai pas utilisé le this. c'est parce que j'utilise le pattern MVVM

    Si c'est quand même possible, cela m'interesse de savoir comment !

    Merci pour ta réponse,
    Steven

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 10
    Dernier message: 09/06/2015, 10h44
  2. [SP-2010] récupérer les terme d'une colonne d'une liste dans une autre liste
    Par Noruk dans le forum SharePoint
    Réponses: 2
    Dernier message: 09/02/2015, 19h15
  3. [2.x] Une collection dans une collection ?
    Par Crackerz dans le forum Symfony
    Réponses: 2
    Dernier message: 25/08/2014, 22h22
  4. [WD16] Récupérer la valeur d'une colonne d'une table d'une ligne précise
    Par elghers_hocine dans le forum WinDev
    Réponses: 16
    Dernier message: 06/05/2011, 19h11
  5. Récupérer le nom d'une colonne d'une table dans une variable
    Par mimi51340 dans le forum Général Java
    Réponses: 4
    Dernier message: 13/03/2008, 15h23

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