我有三个json链接。在它们中,一个链接包含类别(MenuCategory)即(starters,maindishes),两个链接包含(MenuItem)一些数据(Itemname,Price,Picture)。您可以在下面的图像中看到,起始者和主菜是来自一个链接的标题,其下面的项目是初学者和主题,来自两个不同的链接(... / menuitems / 1和../menuitems/2)。如何将此数据导入longlistselector,如图所示。我将Json数据放入我的应用程序,但我需要在LLS中显示它们。如何将它们结合起来?
// http://xxxxxx.net/restaurant/category/1
// http://xxxxxx.net//restaurant/menuitems/1 //和http://xxxxxx.net/restaurant/menuitems/2
public class MenuItem
{
public int Menuitemid { get; set; }
public int Menucategoryid { get; set; }
public string Itemname { get; set; }
public double Price { get; set; }
public string Picture { get; set; }
}
public class MenuCategory
{
public int Menucategoryid { get; set; }
public int Menuid { get; set; }
public string Categoryname { get; set; }
public string Description { get; set; }
public bool Active { get; set; }
public string Createddate { get; set; }
public object Modifieddate { get; set; }
}
public class MenuCategoryRootObject
{
public List<MenuCategory> data { get; set; }
}
答案 0 :(得分:1)
要在分组模式下使用LongListSelector,您需要将数据组合成与应用程序可能不同的形式。最后,您将列表控件的ItemsSource绑定到可以看作List<List<T>>
的属性,其中外部List可以是标准List对象,内部List<T>
对象应包含所有属性你的MenuCategory,类型T
应该是类似于MenuItem的类。以下类实现应该给出一个实现此目标的方法的示例。 MenuItemModel可能不应该从您的实现中的MenuItem继承,但这只是为了演示的目的:
public class MenuCategoryModel : List<MenuItemModel>
{
public MenuCategoryModel() { }
public int Menucategoryid { get; set; }
public int Menuid { get; set; }
public string Categoryname { get; set; }
public string Description { get; set; }
public bool Active { get; set; }
public string Createddate { get; set; }
public object Modifieddate { get; set; }
}
public class MenuItemModel : MenuItem { }
如果您绑定到ViewModel,它将具有一个可用作LongListSelector的ItemsSource的属性,如下所示:
public class MyViewModel
{
public MyViewModel() { }
public List<MenuCategoryModel> Categories { get; set; }
}
从那里,您的XAML标记可能如下所示:
<phone:LongListSelector ItemsSource="{Binding Categories}"
IsGroupingEnabled="True">
<phone:LongListSelector.GroupHeaderTemplate>
<DataTemplate>
<Grid Background="DarkSlateGray">
<TextBlock Style="{StaticResource PhoneTextTitle3Style}"
Text="{Binding Categoryname}"
FontWeight="Bold" />
</Grid>
</DataTemplate>
</phone:LongListSelector.GroupHeaderTemplate>
<phone:LongListSelector.ItemTemplate>
<DataTemplate>
<Border Background="LightGray"
BorderBrush="DarkSlateGray"
BorderThickness="0 0 0 1">
<StackPanel>
<TextBlock Style="{StaticResource PhoneTextTitle2Style}"
Foreground="DarkSlateGray"
Text="{Binding Itemname}" />
<TextBlock Style="{StaticResource PhoneTextTitle2Style}"
Foreground="DarkSlateGray"
Text="{Binding Price, StringFormat=C}" />
</StackPanel>
</Border>
</DataTemplate>
</phone:LongListSelector.ItemTemplate>
</phone:LongListSelector>
您可以看到LongListSelector的IsGroupingEnabled设置为true,并且GroupHeaderTemplate和ItemTemplate的定义。您甚至可以启用跳转模式以允许用户点击组标题并在它们之间跳转,但我没有在此处演示此功能。附件是设计器中此实现的示例截图。