ItemContainerGenerator
ListBoxの内容をVisualとして取得し、それを3Dジオメトリのマテリアルとして使いたいようなとき、XAML内にItemがあれば次のようにVisualを取得できます。
<ListBox Name="myListBox" Grid.Row="0" Grid.Column="0">
<Image Source="Media\CityMorning.jpg" Width="100" Margin="10"/>
...
foreach (Visual v in myListBox.Items)
{
VisualBrush myVB = new VisualBrush(v);
...
ところが、リソースのXmlDataProviderの結果を使う場合などは、この形ではVisualを取得できません。こういう場合は、ItemContainerGeneratorを使います。
<ListBox Name="myListBox" ItemsSource="{Binding Source={StaticResource myBlog}}" >
...
int numItems = myListBox.Items.Count;
for (int i=0; i<numItems; i++)
{
Visual v = (Visual)myListBox.ItemContainerGenerator.ContainerFromIndex(i);
VisualBrush myVB = new VisualBrush(v);
...