2009-03-26 7 views
1

XAML에서 DataTemplate이 ListBoxItem을 3D 요소로 정의하는 ListBox를 사용할 수 있는지 알고있는 사람이 있는지 궁금합니다.WPF ListBox의 항목으로 3d 요소

   <ListBox x:Name="lst3D" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"> 
       <ListBox.ItemTemplate> 
        <DataTemplate> 
         <Viewport3D> 
          <Viewport2DVisual3D> 
           <Viewport2DVisual3D.Transform> 
            <RotateTransform3D> 
             <RotateTransform3D.Rotation> 
              <AxisAngleRotation3D Angle="40" Axis="0, 1, 0" /> 
             </RotateTransform3D.Rotation> 
            </RotateTransform3D> 
           </Viewport2DVisual3D.Transform> 
           <Viewport2DVisual3D.Geometry> 
            <MeshGeometry3D Positions="-1,1,0 -1,-1,0 1,-1,0 1,1,0" 
         TextureCoordinates="0,0 0,1 1,1 1,0" 
         TriangleIndices="0 1 2 0 2 3"/> 
           </Viewport2DVisual3D.Geometry> 
           <Viewport2DVisual3D.Material> 
            <DiffuseMaterial Viewport2DVisual3D.IsVisualHostMaterial="True" Brush="AliceBlue"/> 
           </Viewport2DVisual3D.Material> 

           <Label>Hello, 3D</Label> // we'd like to databind controls like this one 

          </Viewport2DVisual3D> 
         </Viewport3D> 
        </DataTemplate> 
       </ListBox.ItemTemplate> 
       <ListBoxItem /> 
       <ListBoxItem /> 
       <ListBoxItem /> 
      </ListBox> 

누구나 이런 종류의 일을 본적이 있습니까/조언이 있습니까? 크게 감사

, BV

답변

0

의 속성에 바인딩하는 바인딩을 사용 할 수 있습니다 <Grid Height="100" Width="100">...</Grid>에서 무엇이든 볼 수 있습니다.

+0

당신 (덕분에 도움이 된 카메론) 덕택입니다. 나는 아직도 일하는 느낌이 전혀 들지 않고, 왜 그런지 이해하지 못한다는 느낌이 싫다. 거의 예외를 던질 것입니다! 다시 한번 감사드립니다. –

0

는이 작업을 수행하는 몇 가지 방법이있다.

DataTemplate을 ControlTemplate으로 변경하고 ListBox의 모든 항목에 적용 할 수 있습니다. 그러나 특정 데이터 유형에 바인딩 할 수는 없습니다.

다른 옵션은 DataTemplate을 resources 섹션으로 이동하고 표시 할 항목의 유형으로 DataType을 설정하는 것입니다. 그럼 당신은 또한 내가 그것을 포장하기 위해 필요한 있도록 레이아웃 공간을 요구하지 않는 Viewpord3D처럼 보이는 등의 콘텐츠 제어

 
    <ContentControl Content="{Binding}" /> 
을 버튼을 교체 등의 항목

+0

Items 컬렉션이 채워지더라도이 두 옵션을 모두 시도해 본 결과 아무 것도 표시되지 않는다고 생각합니다. 무슨 말인지 보여 주시겠습니까? –