分组GridView。 C#。 Windows 8

时间:2012-12-12 15:14:51

标签: c# gridview windows-8

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

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

2 个答案:

答案 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; “对象”类型很重要。因为,对象是基类型。你可以添加各种类。 问候;)