我在App.xaml
定義了以下HeaderTemplate
使用在Xamarin UWP一個ListView的頁眉模板:如何使用ListViewRenderer
<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
如何(白色部分是組頭):
我應該怎麼設置使頭的工作?
UPDATE:
我根據答案修改了源(應用於分組到一個簡單的列表):
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渲染,頭都不見了。
您可以download和動作進行測試。
如果我添加如下代碼:˛'listView.HeaderTemplate= App.Current.Resources [「ListViewGroupHeaderTemplate」] as Windows.UI.Xaml.DataTemplate;',那麼主標題出現,所以我猜,組標題設置不正確。我應該在我的CollectionViewSource中設置_a key_ value_嗎? – Nestor
@Nestor,如果你將'listView.HeaderTemplate = App.Current.Resources [「ListViewGroupHeaderTemplate」]設置爲Windows.UI.Xaml.DataTemplate;',那麼這個頭文件就是這個ListView的主頭文件,你的羣組將無法構建通過項目是爲了,但每個組的頭應該是缺少......「我應該在我的CollectionViewSource中設置一個鍵值」,鍵值是爲組標題,它使用LinQ進行分組,分組時,他們是關鍵 - 值對,所以我使用'Key'來綁定ListViewGroupHeaderTemplate中的'CollectionViewSource',你只需要添加這個模板。 –
我修改了我的模板,_fix title_被替換爲{{Binding Key}},但沒有任何改變。另外,我想一個修復標題應該是可見的,因爲它不依賴任何綁定。我在我的XAML中添加了'GroupStyle',但頭部仍然是一個白色的矩形。很奇怪,阻礙了我的工作。 – Nestor