2009-03-26 4 views
1

XAMLで、DataTemplateがListBoxItemを3D要素として定義するListBoxを持つことができるかどうかは誰にも分かりません。WPFリストボックス内のアイテムとしての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

あなた(そしてCameron、助言が非常に役に立ちました)のおかげで。私はまだ何かが働いているという気持ちが嫌いで、理由を完全には理解していません。私はほとんど例外をスローするだろう!再度、感謝します。 –

0

はこれを行うにはいくつかの方法があります。

DataTemplateをControlTemplateに変更し、ListBox内のすべての項目に適用することができます。しかし、特定のデータ型にバインドすることはできません。

他のオプションは、DataTemplateをリソースセクションに移動し、表示するアイテムのタイプにDataTypeを設定することです。そして、あなたはそれがまた、私はそれをラップするために必要なので、レイアウトスペースを要求しないViewpord3Dのように見える、などのコンテンツコントロールで

 
    <ContentControl Content="{Binding}" /> 
をボタンを交換などの項目

+0

私はこれらのオプションを試したと思いますが、何も表示されませんが、Itemsコレクションには値が設定されています。あなたが意味することを私に見せてもらえますか? –

関連する問題