如何将ViewModels对象数据绑定为WPF中的3D模型

问题描述:

我正在研究一个应用程序,该应用程序正在生成一堆代表木板的ViewModel实例的集合(全部需要attriuttes-x,y,z,posx,posy,posz)。这工作正常。如何将ViewModels对象数据绑定为WPF中的3D模型

现在我想在3D环境中以可视化的应用内这些木板:

我发现很多的例子来说明如何使用viewport3d Frameworkelement创建箱,但我的问题是,所有的人展示如何静态定义一个3dobject。 我在尝试和尝试,但我没有设法找到如何绑定整个集合,转换单个框,旋转和调整它们大小的单个示例。

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

可以

  1. 投入到你的窗口依赖属性的ViewModels和改变它用代码绑定创建几何模型背后

  1. 创建一个基于UserControl的ex。上的Viewport3D做1.它
  2. 的绑定,您可以创建这样的方式(伪代码):

    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 geometries

开始=“2>