我在中HeaderTemplate
定义了以下内容App.xaml
:
<DataTemplate x:Key="ListViewGroupHeaderTemplate">
<TextBlock Foreground="Black" Text="Something" />
</DataTemplate>
我在我的ListViewRenderer
:
listView.ItemTemplate = App.Current.Resources["ListViewItemTemplate"] as Windows.UI.Xaml.DataTemplate;
var gs = new GroupStyle();
gs.HeaderTemplate = App.Current.Resources["ListViewGroupHeaderTemplate"] as Windows.UI.Xaml.DataTemplate;
listView.GroupStyle.Add(gs);
我的来源ListView
是CollectionViewSource
:
CollectionViewSource cvs = new CollectionViewSource();
cvs.IsSourceGrouped = true;
cvs.Source = ((SourceListView)Element).Items;
if (listView.ItemsSource == null)
listView.ItemsSource = cvs.View;
ItemTemplate
效果很好。
这就是我的ListView
样子(白色部分是组标题):
我应该设置什么来使标题工作?
更新:
我根据答案修改了我的来源(将分组应用于一个简单的列表):
CollectionViewSource cvs = new CollectionViewSource();
cvs.IsSourceGrouped = true;
var items = ((MyListView)Element).Items;
var itemsAsOC = items as ObservableCollection<GroupListItem>;
List<ListItem> list = new List<ListItem>();
foreach (var item in itemsAsOC)
{
list.AddRange(item);
}
var group = from item in list group item by item.Value into grp orderby grp.Key select grp;
cvs.Source = group;
标头没有任何变化,所以我猜数据源是正确的,但是模板处理中存在一些严重的 Xamarin UWP 错误:
更新 2:
我在没有 Xamarin 渲染器的情况下对其进行了测试,它显示了标题项。
但是,当我使用 Xamarin 渲染器时,标题不见了。
您可以下载并实际测试它。