如何将ViewModels对象数据绑定为WPF中的3D模型
问题描述:
我正在研究一个应用程序,该应用程序正在生成一堆代表木板的ViewModel实例的集合(全部需要attriuttes-x,y,z,posx,posy,posz
)。这工作正常。如何将ViewModels对象数据绑定为WPF中的3D模型
现在我想在3D环境中以可视化的应用内这些木板:
我发现很多的例子来说明如何使用viewport3d Frameworkelement
创建箱,但我的问题是,所有的人展示如何静态定义一个3dobject
。 我在尝试和尝试,但我没有设法找到如何绑定整个集合,转换单个框,旋转和调整它们大小的单个示例。
有谁知道如何在WPF中数据绑定3D视图模型集合?
答
可以
- 投入到你的窗口依赖属性的ViewModels和改变它用代码绑定创建几何模型背后
或
- 创建一个基于UserControl的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 geometries