我正在开发一个应用程序,该应用程序正在生成一组表示木板的ViewModel实例集合(具有所有所需的attriuttes-x,y,z,posx,posy,posz
)。这很好用。
现在我想在3d环境中可视化应用程序中的这些支架:
我已经找到了很多如何使用viewport3d Frameworkelement
创建框的例子,但我的问题是,所有这些例子都显示了如何静态定义单个3dobject
。我一直在尝试,但我没有找到一个如何数据绑定整个集合、转换单个框、旋转和调整它们大小的例子。
有人知道如何在WPF中数据绑定3D视图模型集合吗
您可以
- 将一个依赖属性ViewModels放在您的窗口中,并在更改它时在代码背后创建具有绑定的几何体模型
或
- 在Viewport3D上创建一个基于UserControl的示例,然后执行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
您可以使用一个可以从中复制/粘贴的示例:不同几何形状的相同ScaleTransform3D