C# Xaml:在DataTemplate中绑定集合

C# Xaml:在DataTemplate中绑定集合,c#,xaml,binding,datatemplate,C#,Xaml,Binding,Datatemplate,我对xaml和数据绑定非常陌生,所以请不要吃我。我正在从事一个Windows8商店项目atm,对嵌套数据绑定有一些理解问题。我会尽可能清晰地组织我的帖子,如果需要的话,我非常愿意给出更多的建议 假设我有这样一个类结构: public class Hotels { public Collection<Hotel> HotelCollection { get; set; } } public class Hotel { public string Name { get;

我对xaml和数据绑定非常陌生,所以请不要吃我。我正在从事一个Windows8商店项目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; }
}
因此,到目前为止,我一直在尝试向CustomStyles.xaml添加一个数据模板。我可以发布此代码,但这正是我需要帮助的地方。我不知道如何处理房间的收集。我能够在草图的输出红色部分显示基本酒店数据,但如何在DataTemplate蓝色部分中管理多个房间

HotelPage.xaml的代码:

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

您可以使用集合控件,例如ItemsControl,将ItemTemplate设置为另一个DataTemplate的实例


您可以使用集合控件,例如ItemsControl,将ItemTemplate设置为另一个DataTemplate的实例


非常感谢!这对我帮助很大!非常感谢!这对我帮助很大!
<GridView x:Name="HotelResults" HorizontalAlignment="Left" VerticalAlignment="Top"
          ItemsSource="{Binding HotelResults}"
          ItemTemplate="{StaticResource HotelPageTemplate}"         
</GridView>
<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>