Joh*_*ann 1 c# xaml binding datatemplate
我是xaml和数据绑定的新手,所以请不要吃我.我担心Windows 8商店项目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; }
}
Run Code Online (Sandbox Code Playgroud)
我想将这些数据绑定到GridView(本身不需要是网格视图),如下所示:

我正在将数据加载到我的页面(在HotelPageViewModel中我有一个ObservableCollection'Hotel's - > HotelResults):
var viewModel = new HotelPageViewModel();
this.DataContext = viewModel;
Run Code Online (Sandbox Code Playgroud)
所以我到目前为止尝试的是在我的CustomStyles.xaml中添加一个Datatemplate.我可以发布这段代码,但那是我需要帮助的地方.我不知道如何处理Room-Collection.我能够在输出中显示基本的酒店数据(我的草图的红色部分),但我如何在我的DataTemplate(蓝色部分)中管理多个房间?
HotelPage.xaml的代码:
<GridView x:Name="HotelResults" HorizontalAlignment="Left" VerticalAlignment="Top"
ItemsSource="{Binding HotelResults}"
ItemTemplate="{StaticResource HotelPageTemplate}"
</GridView>
Run Code Online (Sandbox Code Playgroud)
您将使用集合控件,例如将其ItemsControl设置ItemTemplate为另一个的实例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>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3001 次 |
| 最近记录: |