我正在尝试在 xamarin 表单中使用组 header 模板 我已按照以下文章实现,但没有成功 http://motzcod.es/post/94643411707/enhancing-xamarinforms-listview-with-grouping 甚至从这里接受了建议 http://www.infinite-x.net/2015/04/08/working-with-the-listview-groupheadertemplate/
如果我放置 GroupDisplayBinding,即使我有模板,我也会得到正常的样式
<ListView.GroupHeaderTemplate>
<ViewCell>
<StackLayout
VerticalOptions="FillAndExpand"
BackgroundColor="#009688">
<Label Text="{Binding Key}" TextColor="White" Margin="10" FontSize="Medium" />
</StackLayout>
</ViewCell>
</ListView.GroupHeaderTemplate>
如果我删除 GroupDisplayBinding,我将在组中获得我的组类类型,如下图所示
采集代码
private ObservableCollection<Grouping<string, MFullIssue>> _Issues;
public ObservableCollection<Grouping<string, MFullIssue>> Issues
{
get { return _Issues; }
set { _Issues = value; OnPropertyChanged(); }
}
SthotramService.service.Issues().ContinueWith((t) =>
{
var sorted = from c in t.Result
orderby c.IssueTypeName
group c by c.IssueTypeName
into theGroup
select new Grouping<string, MFullIssue>(theGroup.Key, theGroup);
Issues = new ObservableCollection<Grouping<string, MFullIssue>>(sorted);
});
集合对象
public class MFullIssue
{
public int IssueID { get; set; }
public int IssueTypeID { get; set; }
public string Issue { get; set; }
public int DisplayOrder { get; set; }
public bool IsActive { get; set; }
public string IssueTypeName { get; set; }
public string IssueTypeDesc { get; set; }
public List<MResolution> Resolutions { get; set; }
}
分组类
public class Grouping<K,T>:ObservableCollection<T>
{
public K Key { get; private set; }
public Grouping(K key, IEnumerable<T> items)
{
Key = key;
foreach (var item in items)
{
Items.Add(item);
}
}
}
最佳答案
查看我的 Grouped ListView 代码,您的 GroupHeaderTemplate
需要是 DataTemplate
。不确定这是否是根本问题,但如果不是,以后肯定会导致问题:
<ListView.GroupHeaderTemplate>
<DataTemplate>
<ViewCell>
...
除此之外,我没有发现您的代码有任何问题,因此您可能需要确保 ObservableCollection
中的组看起来正确。
关于listview - Xamarin 表单 ListView 组标题模板不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38416615/