如何更改对ItemsSource的引用Ilist集合修改为从XMLDataProvider生成的ItemsSource集合?

时间:2010-12-01 05:47:12

标签: c# wpf binding

我正在尝试修改使用ObservableCollection生成的内容到使用XMLDataprovider生成的集合的代码。我能够成功地使用XMLDataProvider生成内容。我现在要解决的问题是修改从ObservableCollection生成的内容引用它的代码。每当我运行下面的方法时,我的应用程序就会被冻结。看起来IList不适合引用XML集合。应该用什么呢?提前谢谢。

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 });
                }
            }
        }
    }

1 个答案:

答案 0 :(得分:0)

你为什么要这样做?:

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