分组LongListSelector:标题出现,项目不出现
C#中的WinPhone 8项目。 我正在尝试填充分组列表。 显示组标题,但项目不显示。 相关代码是:
class MyPage { public class Group : IGrouping { public string Title{get;set;} public string[] Items; public string Key { get { return Title; } } public IEnumerator GetEnumerator() { return (Items as IEnumerable).GetEnumerator(); } System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() { return Items.GetEnumerator(); } } private Group[] m_ItemGroups = { new Group(){Title = "A", Items = new string[] {"A", "ASA"}}, new Group(){Title = "X", Items = new string[] {"X", "XX"}}, }; private void OnLoaded(object sender, RoutedEventArgs e) { TheList.ItemsSource = m_ItemGroups; } }
和XAML:
两个GetEnumerator()
方法都没有被调用。 Key
getter也从未被调用过。 看起来列表不能将我的Group
类识别为字符串集合。 拜托,这里有什么问题?
项目模板很好。 当我将列表更改为非分组时,我看到两个带有虚拟文本的项目。
使用自定义类替换string
作为项类型没有帮助。
Seva是正确的,Microsoft更改了您在分组模式下分配给LongListSelector
的ItemsSource
的类型要求。
您需要将您正在使用的任何类转换为从inheritanceIEnumerable
到仅inheritanceList
。
请参阅此处以获取答案的完整说明
实际上它非常简单,这就是你可以使用WP8 LongListSelector的Group类的例子如下所示:
public class Group : List { public Group(char name, IEnumerable items) : base(items) { this.Letter = name; } public char Letter { get; set; } }
看起来LongListSelector
在分组模式下期望ItemsSource
集合中的对象实现System.Collections.IList
(无类型)。 一个简单的IEnumerator
不会这样做。
我希望有记录。 到目前为止,WP8 SDK文档吸引了大量时间。