다음을 통해 공유


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

...