为什么LonglistSelector不显示项目,虽然它显示GroupHeaderItem?

时间:2014-09-04 17:27:18

标签: xaml windows-phone-8

我的LonglistSelector仅显示GroupHeaderTemplate数据(ImageSource,Title),但不显示ItemTemplate DataTemplate(SubItemTitle,Location)。我该如何解决?

public class Data
{
    public string Title { get; set; }
    public string ImageSource { get; set; }
    public List<SubItem> SubItems { get; set; }       
    public Data()
    {
        SubItems = new List<SubItem>();   
    }

}

public class SubItem
{
    public string SubItemTitle { get; set; }
    public string Location { get; set; }
}

<phone:LongListSelector ItemsSource="{Binding DataCollection}" Grid.Row="0" IsGroupingEnabled="True">
    <phone:LongListSelector.GroupHeaderTemplate>
        <DataTemplate>
            <StackPanel Orientation="Horizontal" Margin="10">
                <Image Source="{Binding ImageSource}"/>
                <TextBlock Text="{Binding Title}"/>
            </StackPanel>
        </DataTemplate>
    </phone:LongListSelector.GroupHeaderTemplate>
    <phone:LongListSelector.ItemTemplate>
        <DataTemplate>
            <StackPanel>
                <StackPanel Orientation="Horizontal">
                    <TextBlock Text="{Binding SubItemTitle}" Padding="5" FontSize="40"/>
                    <TextBlock Text="{Binding Location}" Padding="5" FontSize="40"/>
                </StackPanel>
            </StackPanel>
        </DataTemplate>
    </phone:LongListSelector.ItemTemplate>
</phone:LongListSelector>

2 个答案:

答案 0 :(得分:0)

您必须转换您正在使用的任何类来对继承的项目进行分组。尝试使用List而不是IEnumerator

此问题讨论了相同的longlistselector问题。

Grouped LongListSelector: headers appear, items don't

希望它有所帮助!

答案 1 :(得分:0)

当我无法理解使用LongListSelector

进行分组时,这个MSDN示例对我帮助很大

How to display data in a grouped list in LongListSelector for Windows Phone 8


需要按键值进行分组。在我所知道的所有例子中,总是这样:

List<AlphaKeyGroup<your_data_type>> my_group_list;  // or
ObservableCollection<AlphaKeyGroup<your_data_type>> my_group_list;

不是具有SubList属性的List。

AlphaKeyGroup只是一个List<T> / ObservableCollection<T>,其中包含一个Key的额外属性


想一想,在你的代码中,LongListSelector如何知道你的&#34; Title&#34;是组密钥而不是&#34; ImageSource&#34;?

如果MSDN页面上的代码太复杂而无法理解,您可以始终采用更简单的路径并使用GroupBy使用LINQ。

这是一个例子:Group by in LINQ