2009-02-19 8 views
0

Je lie déjà un listview (grille) avec hashtable, alors comment puis-je obtenir des objets à partir de là? Avant d'utiliser la hashtable, j'ai juste fait ListViewA.SelectedItems; et je recevais la source.WPF Listview lié avec Hashtable

Ir échoue lorsque j'utilise deux foreach boucles:

dlstTemplates est mon ListView dans WPF

foreach (var group in dlstTemplates.SelectedItems) 
{ 
    foreach (var Template in group) 
    { 

    } 
} 

Erreur 2 foreach ne peut fonctionner sur des variables de type 'objet' parce que « objet 'ne contient pas de définition publique pour ' GetEnumerator 'D: \ cs_InformeMedico \ app \ Template.xaml.cs 85 21 Demo.View

Je trouve cela sur débogueur:

-  dlstPlantillas.SelectedItems Count = 1 System.Collections.IList {System.Windows.Controls.SelectedItemCollection} 
-  [0] {System.Data.Linq.SqlClient.ObjectReaderCompiler.Group<string,Demo.View.Plantilla>} object {System.Data.Linq.SqlClient.ObjectReaderCompiler.Group<string,Demo.View.Plantilla>} 
-  Non-Public members  
+  items Count = 97 System.Collections.Generic.IEnumerable<Demo.View.Plantilla> {System.Collections.Generic.List<Demo.View.Plantilla>} 
     key "101010112000" string 
     System.Linq.IGrouping<K,T>.Key "101010112000" string 
-  Results View Expanding the Results View will enumerate the IEnumerable 
+  [0] {Demo.View.Plantilla} Demo.View.Plantilla 
+  [1] {Demo.View.Plantilla} Demo.View.Plantilla 
+  [2] {Demo.View.Plantilla} Demo.View.Plantilla 
+  [3] {Demo.View.Plantilla} Demo.View.Plantilla 
+  [4] {Demo.View.Plantilla} Demo.View.Plantilla 
+  [5] {Demo.View.Plantilla} Demo.View.Plantilla 
+  [6] {Demo.View.Plantilla} Demo.View.Plantilla 
+  [7] {Demo.View.Plantilla} Demo.View.Plantilla 
+  [8] {Demo.View.Plantilla} Demo.View.Plantilla 
+  [9] {Demo.View.Plantilla} Demo.View.Plantilla 
+  [10] {Demo.View.Plantilla} Demo.View.Plantilla 
-  Raw View   
-  [System.Windows.Controls.SelectedItemCollection] Count = 1 System.Windows.Controls.SelectedItemCollection 
+  [0] {System.Data.Linq.SqlClient.ObjectReaderCompiler.Group<string,Demo.View.Plantilla>} object {System.Data.Linq.SqlClient.ObjectReaderCompiler.Group<string,Demo.View.Plantilla>} 
+  Raw View   
     IsFixedSize false bool 
     IsReadOnly false bool 

Ainsi, lorsque le groupe est un

{System.Data.Linq.SqlClient.ObjectReaderCompiler.Group<string,Demo.View.Plantilla>} object type 

Désolé Plantilla = modèle, je Traduce pour comprendre plus

Répondre

1

Vous ne semblez pas travailler avec une collection dans la deuxième boucle.
Peut-être que vous vouliez

foreach(var group in dlstTemplates.SelectedItems) 
{ 
    foreach(var Template in groupCast.Templates) 
    { 
     //do stuff... 
    } 
} 

ou somesuch.

+0

Je ne peux pas obtenir des modèles en tant que propriété dans groupCast, donc je dois ajouter une propriété par défaut dans ma classe de modèle nommée modèles? –

+0

lorsque j'essaie d'obtenir Erreur 1 'Modèle': les noms des membres ne peuvent pas être les mêmes que ceux du type D: \ cs_InformeMedico \ app \ Template.cs 26 26 Demo.View –

+0

Non. Vous essayiez d'énumérer un seul objet dans la 2ème boucle. Vous utilisez foreach vous devez travailler sur une collection. foreach (var chose dans (int) 17) donnera la même erreur que vous obteniez. – ZombieSheep

0
  foreach (var group in dlstPlantillas.SelectedItems) 
      { 
       IGrouping<string, Plantilla> groupCast = group as System.Linq.IGrouping<string, Plantilla>; 
       if (null == groupCast) return; 
       foreach (Plantilla item in groupCast) 
       { 
        template.codigoestudio = item.codigoestudio; 

       } 
      } 

espère aide ... grâce ZombieSheep pour l'inspiration!

Questions connexes