Windows phone 7.1 Windows Phone 7的组列表框?

Windows phone 7.1 Windows Phone 7的组列表框?,windows-phone-7.1,windows-phone-7,Windows Phone 7.1,Windows Phone 7,我正在寻找一种方法来对项目进行分组,类似于下面的应用程序对项目进行分组的方式。是否可以使用视图模型创建组列表框?我计划拥有多个客户群,例如: “AAA”(集团) --“XDN”(联系人) “国家编目局”(集团) --“XDN”(联系人) 等等。。。我不想用字母来分隔,而是用组名来分隔。这可能吗 谢谢 没有任何东西可以阻止您创建符合该确切目的的定制有序集合。下面是我通常用于它的集合类型,当它与中的LongListSelector集成时 显然,您必须修改GroupHeaderTemplate,但这

我正在寻找一种方法来对项目进行分组,类似于下面的应用程序对项目进行分组的方式。是否可以使用视图模型创建组列表框?我计划拥有多个客户群,例如:

“AAA”(集团) --“XDN”(联系人)

“国家编目局”(集团) --“XDN”(联系人)

等等。。。我不想用字母来分隔,而是用组名来分隔。这可能吗

谢谢


没有任何东西可以阻止您创建符合该确切目的的定制有序集合。下面是我通常用于它的集合类型,当它与中的
LongListSelector
集成时

显然,您必须修改
GroupHeaderTemplate
,但这非常简单

using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;

namespace LongListSample
{
    public class LongListCollection<T, TKey> : ObservableCollection<LongListItem<T, TKey>>
        where T : IComparable<T>
    {
        public LongListCollection()
        {
        }

        public LongListCollection(IEnumerable<T> items, Func<T, TKey> keySelector)            
        {
            if (items == null)
                throw new ArgumentException("items");

            var groups = new Dictionary<TKey, LongListItem<T, TKey>>();

            foreach (var item in items.OrderBy(x => x))
            {
                var key = keySelector(item);

                if (groups.ContainsKey(key) == false)
                    groups.Add(key, new LongListItem<T, TKey>(key));

                groups[key].Add(item);
            }

            foreach (var value in groups.Values)
                this.Add(value);
        }
    }

    public class LongListItem<T, TKey> : ObservableCollection<T>
    {
        public LongListItem()
        {
        }

        public LongListItem(TKey key)
        {
            this.Key = key;
        }

        public TKey Key
        {
            get;
            set;
        }

        public bool HasItems
        {
            get
            {
                return Count > 0;
            }
        }
    }
}
使用系统;
使用System.Collections.Generic;
使用System.Collections.ObjectModel;
使用System.Linq;
名称空间LongListSample
{
公共类LongListCollection:ObservableCollection
其中T:i可比较
{
公共长列表集合()
{
}
公共LongListCollection(IEnumerable项,Func键选择器)
{
if(items==null)
抛出新的ArgumentException(“项目”);
var groups=newdictionary();
foreach(items.OrderBy中的var项(x=>x))
{
var键=键选择器(项);
if(groups.ContainsKey(key)==false)
添加(键,新的LongListItem(键));
组[键]。添加(项);
}
foreach(组中的var值。值)
增加(价值);
}
}
公共类LongListItem:ObservableCollection
{
公共长列表项()
{
}
公共长列表项(TKey)
{
这个。键=键;
}
公钥
{
得到;
设置
}
公共物品
{
得到
{
返回计数>0;
}
}
}
}
使用示例:


嘿,酷,谢谢,这正是我想要的。非常感谢你!这个github链接目前是404的:/您介意给出一个如何使用该类的示例吗?谢谢克劳斯。您能给出一个Xaml数据绑定的例子吗?