1

我对 xaml 和数据绑定非常陌生,所以请不要吃我。我正在使用 Windows 8 Store Project atm 并且确实对嵌套数据绑定有一些理解问题。我将尝试尽可能清晰地构建我的帖子,如果需要,我非常愿意提供进一步的投入。

假设我有一个这样的类结构:

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(本身不需要是网格视图),如下所示: 在此处输入图像描述

我正在将数据加载到我的页面中(在 HotelPageViewModel 中,我确实有一个 ObservableCollection 的 'Hotel's -> HotelResults):

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

所以到目前为止我尝试的是向我的 CustomStyles.xaml 添加一个数据模板。我可以发布此代码,但这就是我需要帮助的地方。我不知道如何处理 Room-Collection。我能够在我的输出中显示基本的酒店数据(我的草图的红色部分),但是我如何在我的 DataTemplate(蓝色部分)中管理多个房间?

HotelPage.xaml 的代码:

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

1 回答 1

7

您将使用集合控件,例如将ItemsControl设置ItemTemplate为 another 的实例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>
于 2013-03-13T08:48:15.487 回答