![](/img/trans.png)
[英]WinRT ListView UI Virtualization and DataTemplateSelector with a lot of templates (10-15)
[英]WinRT ListView virtualization
我想在數據庫的列表視圖中顯示1萬個項目。 我嘗試通過IList
界面使用可視化。 想法是按照listview的要求一件一件地取物品。 (僅可見項目)。 但是在創建VirtualComboList
對象並將其分配給ListView時出現以下異常。
Object reference not set to an instance of an object.
類似的代碼對於WP8(Silverlight)也可以正常工作。 現在,有人可以告訴我我想念什么嗎?
public void initializeList()
{
int ItemsCount = getItemsCountFromDatabase();
VirtualComboList list = new VirtualComboList(ItemsCount);
listBox1.ItemsSource = list; //Exception at this line
}
我的VirtualComboList類實現IList接口
class VirtualComboList : IList<string>
{
int ItemCount;
public VirtualComboList(int count)
{
ItemCount = count;
}
public int IndexOf(string item)
{
return -1;
}
public void Insert(int index, string item)
{
}
public void RemoveAt(int index)
{
}
public string this[int index]
{
get
{
return getStringFromDatabaseForIndex(index);
}
set
{
}
}
public void Add(string item)
{
}
public void Clear()
{
}
public bool Contains(string item)
{
return false;
}
public void CopyTo(string[] array, int arrayIndex)
{
}
public int Count
{
get { return ItemCount; }
}
public bool IsReadOnly
{
get { return true ; }
}
public bool Remove(string item)
{
return true;
}
public IEnumerator<string> GetEnumerator()
{
return null;
}
System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
{
return null;
}
}
您有GetEnumerator
方法返回null
。 不要那樣做 ItemsControl
(在本例中為ListView
)試圖使用Enumerator
遍歷列表,該Enumerator
為null
,從而導致異常。
您應該研究GetEnumerator
的正確實現。 或者,您可以將List<string>
作為自定義類的字段/屬性,並只需公開基礎集合的方法,這樣您就不必自己實現它們。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.