2013-12-17 3 views
1

У меня есть LongListSelector, который работает так, как должен, я хочу только включить группировку сейчас. Как и в PeopleHub и JumpList. Как мне это сделать ? Я проверил пример на MSDN, но это сложно, и это не сработало для меня, может быть, я не понимаю этого правильно.LongListSelector grouping, JumpList

Я не заполняю LongListSelector кодом xaml или C#, но с разбором 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 ищет свойство под названием «Key», как заголовок группы (магические строки!).

Кроме того, не забудьте установить IsGroupingEnabled="true" на элемент управления.

+0

Могу ли я поместить этот класс в MainPage? Для чего используется ключ, если он группирует страны по имени? – Skynet

+0

Я получаю сообщение об ошибке во второй части, но он говорит: «app.MainPage.CountryGrouping» не содержит конструктор, который принимает 1 аргумент – Skynet

+0

@Skynet моя ошибка, мне нужно было добавить конструктор в 'CountryGrouping'. «Ключ» нужен «LongListSelector» (я думаю). – McGarnagle

1

Взгляните на этой вики о LongListSelector на сайте разработчика Nokia: http://developer.nokia.com/Community/Wiki/LongListSelector_with_bindable_SelectedItem_and_better_scrolling

Потому что она содержит хороший пример, вы можете использовать, но также говорю о других вещах, которые вы можете быть необходимостью, если вы идете дальше с LongListSelector (например, получение выбранного и других вещей)

+0

Я уже запрограммировал все, что мне нужно, selectedItem тоже, я все равно посмотрю. – Skynet

+0

Не используйте для меня там. – Skynet

+0

Хорошо, трудно сказать, почему вы не видите группы, хотя :( – Depechie