2010-12-01 13 views
0

J'essaie de modifier un code où le contenu généré avec ObservableCollection à collection est généré avec XMLDataprovider. Je suis capable de générer le contenu avec XMLDataProvider avec succès. Le problème que j'essaye de résoudre maintenant est de modifier le code où il est référencé au contenu généré par ObservableCollection. Chaque fois que je lance la méthode ci-dessous, mon application est gelée. Il semble que IList ne soit pas une référence appropriée à la collection XML. Qu'est-ce qui devrait être utilisé à la place? Merci d'avance.Comment faire pour modifier la référence à ItemsSource collection Ilist modifier à la collection ItemsSource générée à partir de XMLDataProvider?

public static void InsertItemInItemsControl(ItemsControl itemsControl, object itemToInsert, int insertionIndex) 
    { 
     if (itemToInsert != null) 
     { 
      IEnumerable itemsSource = itemsControl.ItemsSource; 

      if (itemsSource == null) 
      { 
       itemsControl.Items.Insert(insertionIndex, itemToInsert); 
      } 
      // It looks like IList is not appropriate reference to XML collection   else if (itemsSource is IList) 
      { 
       ((IList)itemsSource).Insert(insertionIndex, itemToInsert); 
      } 
      else 
      { 
       Type type = itemsSource.GetType(); 
       Type genericIListType = type.GetInterface("IList`1"); 
       if (genericIListType != null) 
       { 
        type.GetMethod("Insert").Invoke(itemsSource, new object[] { insertionIndex, itemToInsert }); 
       } 
      } 
     } 
    } 

Répondre

0

Pourquoi faites-vous cette ?:

// it looks like IList is not appropriate reference to XML collection 
else if (itemsSource is IList) 
{ 
    ((IList)itemsSource).Insert(insertionIndex, itemToInsert); 
} 
+0

L'échantillon je travaille avec ObservableCollection, je dois genenerate content de XmlDataProvider. La méthode ci-dessus est la partie du code de glisser-déposer échantillon ici: http://bea.stollnitz.com/blog/?p=53. S'il vous plaît laissez-moi savoir si j'ai répondu à votre question. – vladc77