构建信息

时间:2014-01-30 11:46:49

标签: c# xaml windows-phone

我有一个代表一个人的课程,有一些信息

public class Agente
{
    public string title { get; set; }
    public string address { get; set; }
    public string name { get; set; }
    public string email { get; set; }
    public string phone { get; set; }
    public string fax { get; set; }
    public string website { get; set; }
    public string id { get; set; }
    public string continent { get; set; }
    public string country { get; set; }

    public Agente()
    {

    }
}

我需要根据其国家对这个类的对象进行分组,所以我将有一个来自西班牙的ppl列表,另一个来自意大利的ppl列表。 拥有这些列表后,我需要在Windows手机应用程序上显示它们:

国家
人1 人2

国家
人3 人4

最好的方法是什么?

2 个答案:

答案 0 :(得分:0)

您需要遍历人员列表,然后按国家名称对其进行相应的订购..

List persons..
HashTable<List<Person>> countries=new HashTable();
foreach(person in persons){
 if(countries.contains(person.country)){
 countries.value.add(person);
}
else{
List<Person> per = new list();
per.add(person);
countries.add(person.country,per);
}
}

答案 1 :(得分:0)

假设你已经按照某种顺序得到它们:

列出项目= ....

var byCountry = items.GroupBy( agente => agente.country);

或按国家/地区订购,然后按ID:

var byCountry = items.OrderByBy(agente => agente.country).ThenBy(agente => agente.id);

要在WPF中呈现此内容,您需要某种集合。我假设您正在使用ObservableCollection,因此在查看模型时请确保您拥有适当的属性,例如:

public ObservableCollection<Agente> Agents{get; private set;}

并将其初始化为:

var byCountry = items.OrderByBy(agente => agente.country).ThenBy(agente => agente.id);
this.Agents = new ObservableCollection<Agente>(byCountry);

现在,在您的WPF中声明您的ItemControl绑定到此集合:

<ItemsControl x:Name="Agents" ItemsSource="{Binding Agents}>

注意:这假设您已将视图模型绑定到包含ItemsControl的项目。