2015-06-13 2 views
1

У меня есть GroupHeaderTemplate в Xamarin.Forms для элемента ListView, который не является рендерингом. Вы можете выбрать заголовки и вытащить быстрое меню. Я могу успешно выполнить группы, если я использую свойство элемента ListView GroupDisplayBinding, но когда я указываю свойство GroupHeaderTemplate в ListView, ничего не отображается. В обоих случаях мой ListView ItemTemplate не отображает. Если я удалю заголовок, ItemTemplate отобразит как ожидалось.Xamarin.Forms: GroupHeaderTemplate не отображается, но элементы не отображаются, но, кажется, частично отображаются

<ResourceDictionary> 
     <local:DateConverter x:Key="dateConverter" /> 
    </ResourceDictionary> 
    </ContentPage.Resources> 
<ListView x:Name="barGraphListView" ItemsSource="{x:Static local:BarGraphModelColl.bgModelColl}" 
       IsGroupingEnabled="True" 
       HasUnevenRows="True" HorizontalOptions="FillAndExpand" VerticalOptions="EndAndExpand"> 
     <ListView.GroupHeaderTemplate> 
     <DataTemplate> 
      <ViewCell Height="25"> 
      <Label Text="{Binding Date, Converter={StaticResource dateConverter}}" TextColor="White" /> 
      </ViewCell> 
     </DataTemplate> 
     </ListView.GroupHeaderTemplate> 
     <ListView.ItemTemplate> 
     <DataTemplate> 
      <StackLayout Orientation="Vertical" Padding="0,10"> 
       <Label Text="{Binding DataCategory}" /> 
       <BoxView WidthRequest="{Binding BarHeight}" HorizontalOptions="Start" Color="Blue" HeightRequest="20" /> 
      </StackLayout> 
     </DataTemplate> 
     </ListView.ItemTemplate> 
    </ListView> 

Это мой конвертер

class DateConverter : IValueConverter 
{ 
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo cultureInfo) 
    { 
     DateTime dateTime = (DateTime)value; 
     return String.Format("{0:dddd, MMMM d, yyyy}", dateTime); 
    } 

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo cultureInfo) 
    { 
     throw new NotImplementedException(); 
    } 
} 
+0

не уверен, если это уместно, но ваш XAML имеет DateConverter с небольшим «D» в то время как ваш класс назван с капиталом «D» – Jason

+0

Спасибо, но это не проблема. DateConverter объявлен как ResourceDictionary. Я обновил образец кода. – pigninja

ответ

1

Вам нужно будет указать свой GroupDisplayBinding свойство на вашем ListView, чтобы знать, что отобразить и связываются с. Вы захотите, вероятно, использовать мою Группировку здесь, и вам даже не понадобится использовать ваш конвертер, так как это будет ваш ключ.

http://motzcod.es/post/94643411707/enhancing-xamarin-forms-listview-with-grouping