1

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

このデータをGridViewにバインドしたい(それ自体はグリッドビューである必要はありません)。 ここに画像の説明を入力してください

私はそのようにデータを自分のページにロードしています(HotelPageViewModel内に'Hotel's-> HotelResultsのObservableCollectionがあります):

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

これまでに試したことは、CustomStyles.xamlにDatatemplateを追加することです。このコードを投稿することはできますが、それが私が助けを必要としていることです。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設定します。ItemTemplateDataTemplate

<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 に答える