で以下を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 renderer なしでテストしたところ、ヘッダー項目が表示されました。
ただし、Xamarin レンダラーを使用すると、ヘッダーがなくなります。
ダウンロードして動作をテストできます。