我在Xamarin.Forms中有一个GroupHeaderTemplate用于未呈现的ListView元素。您可以选择标题,然后拉出快捷菜单。如果我使用ListView元素GroupDisplayBinding的属性,我可以成功渲染组,但是当我指定ListView的GroupHeaderTemplate属性时,没有任何渲染。在这两种情况下,我的ListView ItemTemplate都不呈现。如果我删除标题,则ItemTemplate将按预期呈现。
<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 :(得分:1)
您需要在ListView上指定GroupDisplayBinding属性,以便它知道要显示和绑定的内容。您可能希望在此处使用我的分组,您甚至不需要使用转换器,因为它只是您的密钥。
http://motzcod.es/post/94643411707/enhancing-xamarin-forms-listview-with-grouping