Есть ли способ использовать шаблон проектирования MVVM с трехмерной графической частью WPF?
Я хотел бы использовать ModelVisual3D таким же образом, как я использую TreeView, то есть я связываю ItemsSourceи укажите шаблоны для отображения.
Рассмотрите этот фрагмент xaml:
<ModelVisual3D ItemsSource="{Binding Model}">
<ModelVisual3D.Resources>
<HierarchicalDataTemplate DataType="{x:Type models:Group}" ItemsSource="{Binding Children}">
<Model3DGroup>
Not quite sure about this part, perhaps this would be implied
</Model3DGroup>
</HierarchicalDataTemplate>
<DataTemplate DataType="{x:Type models:Box}">
<GeometryModel3D>
<GeometryModel3D.Geometry>
<MeshGeometry3D Positions="...cube..." Normals="...cube..." TriangleIndices="...cube..." />
</GeometryModel3D.Geometry>
<GeometryModel3D.Material>
<DiffuseMaterial>
<DiffuseMaterial.Brush>
<SolidColorBrush Color="{Binding Color}" />
</DiffuseMaterial.Brush>
</DiffuseMaterial>
<GeometryModel3D.Material>
<GeometryModel3D.Transform>
<TranslateTransform3D OffsetX="{Binding PosX}" OffsetY="{Binding PosY}" OffsetZ="{Binding PosZ}" />
</GeometryModel3D.Transform>
</DataTemplate>
<DataTemplate DataType="{x:Type models:Sphere}">
<GeometryModel3D>
<GeometryModel3D.Geometry>
<MeshGeometry3D Positions="making up a sphere" Normals="...sphere..." TriangleIndices="...sphere..." />
</GeometryModel3D.Geometry>
<GeometryModel3D.Material>
<DiffuseMaterial>
<DiffuseMaterial.Brush>
<SolidColorBrush Color="{Binding Color}" />
</DiffuseMaterial.Brush>
</DiffuseMaterial>
<GeometryModel3D.Material>
<GeometryModel3D.Transform>
<TranslateTransform3D OffsetX="{Binding PosX}" OffsetY="{Binding PosY}" OffsetZ="{Binding PosZ}" />
</GeometryModel3D.Transform>
</DataTemplate>
</ModelVisual3D.Resources>
</ModelVisual3D>
, где Children - это ObservableCollectionи Group, Box и Sphere все реализуют интерфейс I3DModelItem.
Возможно ли уже что-то подобное?Если нет, то будет ли очень сложно создать новый элемент управления, который позволяет это?
Я ни в коем случае не эксперт по WPF или MVVM, но был бы готов попробовать это с некоторыми (многоиз) руководство.