![](/img/trans.png)
[英]Items Data Binded to LongListSelector/Listbox not showing in windows phone 8 local database
[英]How to get json links data binded to longlistselector in windows phone?
我有三个json链接。 在它们中,一个链接包含类别(MenuCategory),即(启动器,主菜),两个链接其中包含(MenuItem)一些数据(项目名称,价格,图片)。 您可以在下图中看到,起动器和Maindishes是来自一个链接的标题,而起动器和Maindishes在它们下方的项目来自两个不同的链接(... / 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; }
}
要在分组模式下使用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的定义。 您甚至可以启用跳转模式,以允许用户点击组标题并在它们之间跳转,但是我在这里没有演示此功能。 附件是此实现在设计器中的外观的示例屏幕快照。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.