2016-08-04 32 views
3

DataBind Ich arbeite an einer Anwendung, die eine Reihe von Sammlungen von ViewModel-Instanzen generiert, die Holzbohlen darstellen (hat alle benötigt attriuttes-x,y,z,posx,posy,posz). Das funktioniert gut.Wie man ViewModels-Objekte als 3DModels in WPF

Nun würde Ich mag diese Planks innerhalb der App in einem 3D-Umgebungen visualisieren:

ich viele Beispiele gefunden haben, wie Boxen schafft mit viewport3d Frameworkelement, aber mein Problem ist, dass alle von ihnen zeigen, wie statisch eine einzige definieren 3dobject. Ich habe versucht und experimentiert, aber es ist mir nicht gelungen, ein einzelnes Beispiel zu finden, wie man eine ganze Sammlung mit Daten versorgt, einzelne Kästen transformiert, rotiert und ihre Größe ändert.

Kann jemand 3D-Viewmodel-Sammlungen in WPF erstellen?

Antwort

0

Sie können

  1. Put auf Ihrem Fenster eine abhängige Eigenschaft Viewmodels und zum Ändern sie Ihre Geometriemodelle mit Bindung in Code erstellen hinter

oder

  1. Erstellen Sie ein UserControl basierend z. auf Viewport3D und tun 1. für sie

Die Bindungen können Sie eine solche Art und Weise (Pseudo-Code) erstellen:

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 

Sie ein Beispiel verwenden können, die Sie kopieren können/Paste aus: Same ScaleTransform3D for different geometries