You need to use ItemsControl
to bind the list of values. I am showing simple demo try it and let me if you need further help.
XAML
<ListBox ItemsSource="{Binding Items}">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel>
<TextBlock Text="{Binding BookId}" FontSize="20" />
<TextBlock Text="{Binding BookTitle}" FontSize="20" />
<ItemsControl ItemsSource="{Binding RankingInfo1}" Margin="0 20 0 0">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Border BorderBrush="Blue" BorderThickness="2">
<TextBlock Text="{Binding Ranking}" FontSize="20" />
</Border>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
<ItemsControl ItemsSource="{Binding RankingInfo2}" Margin="0 20 0 0">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Border BorderBrush="Red" BorderThickness="2">
<TextBlock Text="{Binding Ranking}" FontSize="20" />
</Border>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
C#
public List<BookInfo> Items { get; set; }
protected override void OnNavigatedTo(NavigationEventArgs e)
{
var _RankingInfo1 = new List<RankInfo>
{
new RankInfo { Ranking = 1, WeekDate = DateTime.Now },
new RankInfo { Ranking = 2, WeekDate = DateTime.Now }
};
var _RankingInfo2 = new List<RankInfo>
{
new RankInfo { Ranking = 10, WeekDate = DateTime.Now.AddDays(-2) },
new RankInfo { Ranking = 20, WeekDate = DateTime.Now.AddDays(-2) }
};
Items = new List<BookInfo>
{
new BookInfo { BookId = 9, BookTitle = "My Book Title", RankingInfo1 = _RankingInfo1, RankingInfo2 = _RankingInfo2 }
};
this.DataContext = this;
}