3

我正在开发一个应用程序,该应用程序正在生成一堆代表木板的 ViewModel 实例集合(所有需要attriuttes-x,y,z,posx,posy,posz)。这工作正常。

现在我想在 3d 环境中可视化应用程序内部的这些木板:

我找到了很多如何viewport3d Frameworkelement3dobject. 我一直在尝试和试验,但我没有找到一个示例来说明如何对整个集合进行数据绑定、转换单个框、旋转和调整它们的大小。

有谁知道如何在 WPF 中绑定 3D 视图模型集合?

4

1 回答 1

0

你可以

  1. 将一个依赖属性 ViewModels 放到您的窗口中,并在更改它时创建您的几何模型,并在后面的代码中绑定

或者

  1. 创建一个基于用户控件的 ex。在 Viewport3D 上并为它做 1.

您可以通过这种方式创建的绑定(伪代码):

var geo = new MeshGeometry3D { Positions = new Point3DCollection(pointsLists), TriangleIndices = new Int32Collection(indexes) };
geo.Freeze();

var mat = new DiffuseMaterial(Brushes.Gray); mat.Freeze();
var bMat = new DiffuseMaterial(Brushes.Red); bMat.Freeze();

var geomod = new GeometryModel3D(geo, mat);
geomod.BackMaterial = bMat;

geomod.Transform = new ScaleTransform3D();
var bndng = new Binding("ScaleValue");
bndng.Source = SomeViewModel;//Here put the propriate viewmodel
BindingOperations.SetBinding(geomod.Transform, ScaleTransform3D.ScaleXProperty, bndng);
BindingOperations.SetBinding(geomod.Transform, ScaleTransform3D.ScaleYProperty, bndng);
BindingOperations.SetBinding(geomod.Transform, ScaleTransform3D.ScaleZProperty, bndng);

geomod.Geometry = geo;
Model3DGroup.Children.Add(geomod);//Here you have to find reference to you Model3DGroup

您可以使用可以复制/粘贴的示例: Same ScaleTransform3D for different geometry

于 2017-04-05T13:45:04.157 回答