2011-09-16 43 views
1

我有一個Viewport3D,裏面有幾個項目,我想向它添加來自可以綁定到數據的集合的其他項目。有沒有這樣的事情,這將讓這樣的代碼:有沒有像ItemControl在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> 

回答

0

我對此的解決方案是使用標準itemscontrol,並將Viewport3D控件堆疊在彼此之上。這不尊重深度排序,但在我的情況下,我希望項目控件中的項目無論如何都在其他元素的前面:

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