2013-11-21 76 views
0

我有三個json鏈接。其中一個鏈接包含類別(MenuCategory),即(starters,maindishes)和兩個鏈接包含(MenuItem)的一些數據(Itemname,Price,Picture)。你可以在下面的圖片中看到,初學者和Maindishes是來自一個鏈接的標題,它們下面的項目是初學者和Maindishes來自兩個不同的鏈接(.../menuitems/1和../menuitems/2)。如何獲取這個數據到longlistselector中,如圖所示。我將Json數據存入我的應用程序,但我需要在LLS中顯示它們。如何結合他們?如何讓json鏈接數據綁定到windows phone中的longlistselector?

// 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; } 
     } 

enter image description here

+0

你可以很容易地通過結合 – techloverr

+0

請告訴我 –

+0

過得好在收集數據實現這一目標? – techloverr

回答

1

要分組方式使用LongListSelector,您需要將您的數據組成成不同形式比它可能涉及到您的應用程序。最終,您將綁定您的列表控件的ItemsSource到一個屬性,該屬性可以看作List<List<T>>,其中外部List可以是標準List對象,內部List<T>對象應包含MenuCategory的所有屬性,並且類型T應該與MenuItem類似。下面的類實現應該給出一個實現這個目標的方法的例子。該MenuItemModel可能不應該在你的實現,從菜單項繼承,但是這僅僅是示範的目的:

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 { } 

如果綁定到一個視圖模型,那就得你可以作爲一個的ItemsSource使用一個單一的財產您LongListSelector,像這樣:

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。您甚至可以啓用跳轉模式,以允許用戶點擊組頭並在它們之間跳轉,但我沒有在此展示此功能。附件是這個實現在設計器中的樣子截圖。

Sample designer output

相關問題