Xamarin.Forms:GroupHeaderTemplate 不可见,项目也不可见,但似乎部分呈现
Xamarin.Forms: GroupHeaderTemplate is not visible, neither are the items but seems to partially render
我在 Xamarin.Forms 中有一个 GroupHeaderTemplate 用于未呈现的 ListView 元素。您可以 select header 并调出快捷菜单。如果我使用 ListView 元素 GroupDisplayBinding 的 属性,我可以成功呈现这些组,但是当我指定 ListView 的 GroupHeaderTemplate 属性 时,没有任何呈现。在这两种情况下,我的 ListView ItemTemplate 都不会呈现。如果我删除 header,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();
}
}
您需要在 ListView 上指定 GroupDisplayBinding 属性,以便它知道要显示和绑定到的内容。您可能想在这里使用我的分组,您甚至不需要使用您的转换器,因为它只是您的密钥。
http://motzcod.es/post/94643411707/enhancing-xamarin-forms-listview-with-grouping
我在 Xamarin.Forms 中有一个 GroupHeaderTemplate 用于未呈现的 ListView 元素。您可以 select header 并调出快捷菜单。如果我使用 ListView 元素 GroupDisplayBinding 的 属性,我可以成功呈现这些组,但是当我指定 ListView 的 GroupHeaderTemplate 属性 时,没有任何呈现。在这两种情况下,我的 ListView ItemTemplate 都不会呈现。如果我删除 header,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();
}
}
您需要在 ListView 上指定 GroupDisplayBinding 属性,以便它知道要显示和绑定到的内容。您可能想在这里使用我的分组,您甚至不需要使用您的转换器,因为它只是您的密钥。
http://motzcod.es/post/94643411707/enhancing-xamarin-forms-listview-with-grouping