2013-03-13 147 views
1

我對xaml和databinding很新,所以請不要吃我。我在Windows 8 Store Project atm上工作,並且對嵌套數據綁定有一些理解問題。我會盡可能清晰地構建我的帖子,如果需要,我非常樂意進一步輸入信息。Xaml:在DataTemplate中綁定一個集合

讓我們假設我有一類結構是這樣的:

public class Hotels 
{ 
    public Collection<Hotel> HotelCollection { get; set; } 
} 

public class Hotel 
{ 
    public string Name { get; set; } 
    public string Town { get; set; } 
    public string ImageUrl { get; set; } 
    public Collection<Room> RoomCollection { get; set; }   
} 

public class Room 
{   
    public string Name { get; set; } 
    public string OccupancyMax { get; set; } 
    public string OccupancyMin { get; set; } 
} 

我想這個數據綁定到一個GridView(並不需要是一個網格視圖本身),像這樣: enter image description here

我加載數據到我的網頁像這樣(內HotelPageViewModel我確實有「酒店的一個ObservableCollection - > HotelResults):

var viewModel = new HotelPageViewModel(); 
    this.DataContext = viewModel; 

所以我到目前爲止所嘗試的是將一個Datatemplate添加到我的CustomStyles.xaml。我可以發佈這段代碼,但那是我需要幫助的地方。 我不知道如何處理房間集合。我能夠在我的輸出中顯示基本的酒店數據(我素描的紅色部分),但是如何管理DataTemplate中的多個房間(藍色部分)?

代碼爲HotelPage.xaml:

<GridView x:Name="HotelResults" HorizontalAlignment="Left" VerticalAlignment="Top" 
      ItemsSource="{Binding HotelResults}" 
      ItemTemplate="{StaticResource HotelPageTemplate}"   
</GridView> 

回答

7

你會使用採集控制,例如ItemsControlItemTemplate設置的另一個DataTemplate一個實例。

<DataTemplate x:Key="{HotelPageTemplate}"> 
    <StackPanel> 
     <TextBlock Text="{Binding Name"} /> 
     ... 
     <ItemsControl ItemsSource="{Binding RoomCollection}"> 
      <ItemsControl.ItemTemplate> 
      <DataTemplate> 
       <TextBlock Text="{Binding OccupancyMax}" /> 
       ... 
      </DataTemplate> 
      </ItemsControl.ItemTemplate> 
     </ItemsControl> 
    </StackPanel> 
</DateTemplate> 
+0

謝謝!這對我很有幫助! – Johann 2013-03-13 09:08:57

+0

我也是。十分感謝!! – VipX1 2013-10-14 14:10:56