是否有类似ItemsControl的东西可以在Viewport3D中使用?

时间:2011-09-16 01:59:28

标签: wpf viewport3d

我有一个Viewport3D,里面有几个项目,我想要添加来自可以绑定数据的集合的其他项目。是否有这样的东西,允许这样的代码:

<Viewport3D>
     <Viewport3D.Camera...>
     <ModelVisual3D>
         <ModelVisual3D.Content>
             <AmbientLight Color="White"/>
         </ModelVisual3D.Content>
     </ModelVisual3D>

     <ItemsControl ItemsSource="{Binding MyCollection}">
         <ItemsControl.ItemTemplate>
              <DataTemplate ...>
                   <ModelVisual3D ....>
              </DataTemplate>
         </ItemsControl.ItemTemplate>
     </ItemsControl>
</Viewport3D>

2 个答案:

答案 0 :(得分:1)

Josh smith使用viewport3d来托管图片列表.... http://joshsmithonwpf.wordpress.com/2008/03/30/animating-images-in-a-3d-itemscontrol/

这是你寻求的吗?

答案 1 :(得分:0)

我的解决方案是使用标准的itemscontrol,并将Viewport3D控件叠加在一起。这不尊重深度排序,但在我的情况下,我希望itemscontrol中的项目仍然在其余元素的前面:

    <ItemsControl ItemsSource="{Binding XXX}">
        <ItemsControl.ItemsPanel>
            <ItemsPanelTemplate>
                <Grid/>
            </ItemsPanelTemplate>
        </ItemsControl.ItemsPanel>
        <ItemsControl.ItemTemplate>
            <DataTemplate DataType="{x:Type XXX}">
                <Viewport3D Camera="{Binding Camera, ElementName=MainViewport}">
                    <ModelVisual3D>
                        <ModelVisual3D.Content>
                            <AmbientLight Color="White"/>
                        </ModelVisual3D.Content>
                    </ModelVisual3D>

                    <ModelVisual3D>
                      ...my template here...
                    </ModelVisual3D>
                </Viewport3D>

            </DataTemplate>
        </ItemsControl.ItemTemplate>
    </ItemsControl>