语义缩放 - 显示不包含任何项目的字母
Semantic Zoom - Show letters containing no items
如何在我的语义缩放控件的 ZoomedOutView 视图中显示不包含以该字母开头的项目(灰色)的字母表中的字母?
我想达到这样的效果(不包括 'Social'、'Favorites' 和 '#'):
但我最终得到的是:
现在我知道下面的代码是问题所在,但我不知道需要将其更改为什么。有什么想法吗?
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;
}
这很简单。
您必须始终包括每个字母组。
在您的 ZoomedInView 中,您将其设置为隐藏没有项目的组。它是 gridview 中的 属性。在您的 ZoomedOutView 中,您只需使用一个转换器显示 gridview 中的所有组,该转换器检查是否有 children,并根据需要切换颜色。如果用户单击没有 children 的组,您还将添加不响应用户的逻辑。结束。问题已解决。
祝你好运!
如何在我的语义缩放控件的 ZoomedOutView 视图中显示不包含以该字母开头的项目(灰色)的字母表中的字母?
我想达到这样的效果(不包括 'Social'、'Favorites' 和 '#'):
但我最终得到的是:
现在我知道下面的代码是问题所在,但我不知道需要将其更改为什么。有什么想法吗?
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;
}
这很简单。
您必须始终包括每个字母组。
在您的 ZoomedInView 中,您将其设置为隐藏没有项目的组。它是 gridview 中的 属性。在您的 ZoomedOutView 中,您只需使用一个转换器显示 gridview 中的所有组,该转换器检查是否有 children,并根据需要切换颜色。如果用户单击没有 children 的组,您还将添加不响应用户的逻辑。结束。问题已解决。
祝你好运!