2015-02-10 2 views
-1

Как я могу показать буквы алфавита, которые не содержат элементов, начинающихся с этой буквы (в сером цвете) в представлении ZoomedOutView моего семантического зум-управления?Семантический Zoom - Показать буквы, не содержащие предметов

Я хочу, чтобы достичь чего-то вроде этого (кроме «социальных», «Избранное» и «#»): enter image description here

, но я в конечном итоге с этим: enter image description here

Теперь я знаю код ниже, где проблема, но я не знаю, что мне нужно изменить. Есть идеи?

internal List<GroupInfoList<object>> GetGroupsByLetter() 
     { 
      List<GroupInfoList<object>> groups = new List<GroupInfoList<object>>(); 

      var query = from item in Collection 
         orderby ((Item)item).Station 
         group item by ((Item)item).Station[0] into g 
         select new { GroupName = g.Key, Items = g }; 
      foreach (var g in query) 
      { 
       GroupInfoList<object> info = new GroupInfoList<object>(); 
       info.Key = g.GroupName; 
       foreach (var item in g.Items) 
       { 
        info.Add(item); 
       } 
       groups.Add(info); 
      } 

      return groups; 

     } 
+1

Это свалка кода. Неужели вы можете сузить свою проблему лучше, чем это? На этой неделе у меня уже есть часы работы добровольцев. – Jonesopolis

ответ

1

Это довольно просто.

Вы всегда должны включать каждую группу букв.

В вашем ZoomedInView вы устанавливаете его так, чтобы группы без элементов были скрыты. Это свойство в gridview. В ZoomEDOutView вы просто показываете все группы в gridview с конвертером, который проверяет наличие детей, переключая цвет в зависимости. Вы также добавите логику, чтобы не отвечать на пользователя, если они нажимают на группу без детей. Конец. Задача решена.

Удачи!

+0

Нет. Проверьте обновленный код. Что нужно изменить в этом? – MacaronLover