0

我做了很多样本​​,但没有遇到我的问题。也就是说,我想创建一个 Grouped GridView,它由两个组组成,除了每个组由完全不同的集合组成。例如,我想在第一组中是动物,在第二组中是汽车。

我还希望这些组中的每一个都有一个不同的模板;)

4

2 回答 2

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 -> "object" 类型很重要。因为,对象是基本类型。你可以添加,每类。问候 ;)

于 2012-12-12T20:45:16.530 回答
0

使您的两个内部集合项都派生自一个公共基类。当我这样做时,我有一个 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; }

(我的派对项目使用了默认模板。)

于 2012-12-12T15:39:26.670 回答