ここでWPFを学ぶと、私は階層的なデータバインディングの周りに頭を抱えようとしています。どのように階層的なデータバインディングを達成するには?
これが私の状況です:
public class A
{
public int Id { ... }
public IEnumerable<B> Children { ... }
}
public class B
{
public string SomeValue { ... }
}
私はA
のコレクションを表示するためにItemsControl
を使用したいとA
のそれぞれのoccuranceのために、私はA.Children
を表示するための内部ItemsControl
をしたいです。
私は
icCollectionOfAs.ItemsSource = createSomeAsWithChildBsInThem();
結果の...コードビハインドで、その後
<ItemsControl x:Name="icCollectionOfAs" ItemsSource="{Binding}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Grid Width="auto" Height="auto">
<TextBlock Text="{Binding Id}" />
<ItemsControl ItemsSource="{Binding Children}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding SomeValue}" />
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
...どうやら、私はまだ学ぶことがたくさん持っている、これはトリックを行うだろうと思ったが、これは何も表示されません。どうして?
おかげ
画面が最初に表示される前または後にこれを設定しますか? icCollectionOfAs.ItemsSource = createSomeAsWithChildBsInThem(); ' –