gpt4 book ai didi

c# - Xaml:在 DataTemplate 中绑定(bind)集合

转载 作者:太空宇宙 更新时间:2023-11-03 18:36:04 24 4
gpt4 key购买 nike

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

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

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; }
}

我想将此数据绑定(bind)到 GridView(本身不需要是 GridView ),如下所示: enter image description here

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

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

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

HotelPage.xaml 代码:

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

最佳答案

您将使用集合控件,例如 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>

关于c# - Xaml:在 DataTemplate 中绑定(bind)集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15380466/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com