2009-09-08 9 views
12

私のViewModelには、私のビュー内のグリッドをバインドしたいアイテムのリストがあります(アイテムはグリッドの子になります)。リストはアイテムのビューモデルのリストです。グリッドの子をリストにどのようにバインドしますか?

グリッドをリストにバインドするにはどうすればいいですか(コードではなく、xamlではなく.childrenにアクセスできます) また、リスト内のビューモデルのデータテンプレート(別のxamlファイル)を指定して、グリッド内で正しくレンダリングされるようにします。

おかげ

答えて

22

グリッドにItemsPanelセットでItemsControlを使用してください:あなたはいくつかのプロパティにGrid.RowGrid.Column添付プロパティをバインドしたい場合があり、ItemsControlItemContainerStyle

<ItemsControl ItemsSource="{Binding TheList}"> 
    <ItemsControl.ItemsPanel> 
    <ItemsPanelTemplate> 
     <Grid/> 
    </ItemsPanelTemplate> 
    </ItemsControl.ItemsPanel> 
</ItemsControl> 

品目:

<ItemsControl.ItemContainerStyle> 
    <Style TargetType="{x:Type FrameworkElement}"> 
     <Setter Property="Grid.Row" Value="{Binding RowIndex}"/> 
     <Setter Property="Grid.Column" Value="{Binding ColumnIndex}"/> 
    </Style> 
    </ItemsControl.ItemContainerStyle> 
+1

ありがとうございます。誰にも渡って来る場合、私はまた、私の質問の後半部分を考え出し、この

+0

これは、必要な行数と列数を知っていれば効果的ですが、最大行/行/列定義を自動生成する方法はありますか? –

関連する問題