我想知道是否有人知道在XAML中是否有可能有一个ListBox,其DataTemplate将ListBoxItem定义为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 :(得分:0)
有几种方法可以做到这一点。
您可以将DataTemplate更改为ControlTemplate,并将其应用于ListBox中的所有项目。但是您无法将其绑定到特定的数据类型。
另一个选项是将DataTemplate移动到资源部分,并将DataType设置为您希望显示的项目的类型。然后,您可以使用绑定绑定到项目的属性等。
答案 1 :(得分:0)
用内容控件替换按钮,例如
<ContentControl Content="{Binding}" />
它看起来似乎Viewpord3D
没有请求布局空间,所以我需要将它包装在<Grid Height="100" Width="100">...</Grid>
中以查看任何内容。