我做了很多样本,但在我的问题上没有遇到过。 也就是说,我想创建一个Grouped GridView,它由两个组组成,但每个组都由完全不同的集合组成。例如,我想在第一组中是动物,在第二组中是汽车。
我还希望每个组都有不同的模板;)
答案 0 :(得分:0)
使两个内部集合项都派生自一个公共基类。当我这样做时,我有一个ItemBase类,我的Event,Story和Party类都来自Item base。
然后,我的groups集合项每个都包含Items of ObservableCollection的定义。 (我想,现在考虑一下,我可以使用对象作为隐含的基类型,但我没有)编码时,实际上填充了我的派生类,例如。
Items.Add(new Event { Title = "I am an event" };
当您在网格中显示项目时,您将需要创建一个派生自ItemTemplateSelector, and override the SelectTemplateCore(object item, DependencyObject container)方法的新类。我的逻辑就像
一样简单if(item is Event) { return EventTemplate; }
else if(item is Story) { return StoryTemplate }
else { return DefaultTemplate; }
(我的派对项目使用默认模板。)
答案 1 :(得分:0)
创建一个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 - &gt; “对象”类型很重要。因为,对象是基类型。你可以添加各种类。 问候;)