ItemContainerGenerator

Published 15 June 07 10:57 AM | hiroyuk 

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

...

Comments

No Comments
Anonymous comments are disabled

About hiroyuk

マイクロソフト㈱エバンジェリスト。北海道大学理学部物理学科卒。リアルタイム3Dグラフィックスを専門とし、グラフィックスやシェーダに関する技術文章を執筆・講演。 DirectX SDK日本語ドキュメントの開発に携わるとともに、Windows Presentation Foundation プログラミング(オーム社)、Game Programming Gemsシリーズ、リアルタイム レンダリング第2版(ボーンデジタル)、Texturing & Modeling, A Procedural Approach などを翻訳・監修、XAMLプログラミング(ソフトバンク クリエイティブ)を執筆。趣味は薪割り。

Search

This Blog

DirectX 情報

Silverlight 情報

Windows 情報

WPF 情報

並列コンピューティング情報

著書

Syndication

Page view tracker