我做了很多样本,但没有遇到我的问题。也就是说,我想创建一个 Grouped GridView,它由两个组组成,除了每个组由完全不同的集合组成。例如,我想在第一组中是动物,在第二组中是汽车。
我还希望这些组中的每一个都有一个不同的模板;)
创建一个 ObservableCollection 并推送您的收藏项。像这样:
public class ScreenGroupModel
{
private ObservableCollection<object> _groupItems = new ObservableCollection<object>();
public ObservableCollection<object> GroupItems
{
get { return this._groupItems; }
}
public ScreenGroupModel()
{
}
public ObservableCollection<object> GetScreenGroups()
{
_groupItems.Add(new Class1);
_groupItems.Add(new Class2);
return _groupItems;
}
}
这个示例,简单的集合显示。您可以使用 DataTemplateSelectors。每种类,选择一个模板。ObservableCollection -> "object" 类型很重要。因为,对象是基本类型。你可以添加,每类。问候 ;)
使您的两个内部集合项都派生自一个公共基类。当我这样做时,我有一个 ItemBase 类,而我的 Event、Story 和 Party 类都派生自 Item base。
然后,我的组集合项中的每个项都包含 ObservableCollection 项的定义。(我想,现在考虑一下,我可以使用 object 作为隐含的基类型,但我没有)在编码时,这实际上是用我的派生类填充的,例如
Items.Add(new Event { Title = "I am an event" };
当您在网格中显示项目时,您需要创建一个派生自ItemTemplateSelector 的新类,并覆盖 SelectTemplateCore(object item, DependencyObject container)方法。我的逻辑很简单
if(item is Event) { return EventTemplate; }
else if(item is Story) { return StoryTemplate }
else { return DefaultTemplate; }
(我的派对项目使用了默认模板。)