2013-12-17 39 views
1

我有LongListSelector正在工作,因爲它應該,我只想現在啓用分組。就像它在PeopleHub和JumpList中一樣。我怎麼做 ?我已經在MSDN上檢查了一個例子,但它很複雜,它對我沒有用,也許我不明白它的正確性。LongListSelector分組,跳轉列表

我沒有用xaml或C#代碼填充LongListSelector,但用xml解析。

首先我解析XML:

XDocument xml = XDocument.Load("xmlfile.xml"); 

     var data = from query in xml.Descendants("country") 
        select new Country 
        { 
         Name = (string)query.Element("name"),}; 

和設置的ItemsSource:

countriesList.ItemsSource = data.ToList(); 

     // Set the data context of the listbox control to the sample data 
     DataContext = App.ViewModel; 
    } 

我有國家等級:

public class Country 
{ 
    string name; 

    public string Name 
    { 
     get { return name; } 
     set { name = value; } 
    }} 

現在我想組這個國家按名字。我怎樣才能做到這一點 ?

感謝您的幫助。

回答

2

sample中,他們創建了一個叫做AlphaKeyGroup<T>的花式幫手類。真的不過,你只需要一個類來包含各分組:

public class CountryGrouping : List<Country> 
{ 
    public CountryGrouping(IEnumerable<Country> items) : base(items) { } 

    public string Key { get; set; } 
} 

綁定ItemsSource這樣:

countriesList.ItemsSource = data 
    .GroupBy(country => country.Name) 
    .Select(grp => new CountryGrouping(grp.ToArray()) { Key = grp.Key }) 
    .ToList(); 

我猜的LongListSelector查找一個名爲「鍵」屬性作爲組頭(魔術字符串!)。

另外,不要忘記在控制上設置IsGroupingEnabled="true"

+0

我可以把這個類放在MainPage中嗎?如果按名稱對國家進行分組,則使用的密鑰是什麼? – Skynet

+0

雖然我在第二部分得到一個錯誤,它說:'app.MainPage.CountryGrouping'不包含一個構造函數,它帶有一個參數 – Skynet

+0

@Skynet我的錯誤,我需要將構造函數添加到'CountryGrouping'。 'Key'是'LongListSelector'所需要的(我認爲)。 – McGarnagle

1

看看這個wiki有關諾基亞開發者網站的LongListSelector:http://developer.nokia.com/Community/Wiki/LongListSelector_with_bindable_SelectedItem_and_better_scrolling

因爲它包含了你可以使用一個很好的例子,但也對你可能會需要,如果你與LongListSelector走得更遠其他東西會談(如獲取selecteditem和其他東西)

+0

我已經編程了所有我需要的,selectedItem,我也會去看看。 – Skynet

+0

那裏沒有用處。 – Skynet

+0

好吧,很難直接告訴你爲什麼你沒有看到這些組: – Depechie