[WPF] Auf ModelUIElement im Viewport3D zugreifen
-
Hallo liebe Forum-Gemeinde,
ich habe mit WPF einen 3d-Würfel erstellt der als Seitenwand ein Bild hat.
<ModelUIElement3D MouseDown="UIElement3D_MouseDown"> <GeometryModel3D Geometry="{StaticResource wuerfelMesh}"> <GeometryModel3D.Material> <DiffuseMaterial> <DiffuseMaterial.Brush> <ImageBrush ImageSource = "person_icon.png"/> </DiffuseMaterial.Brush> </DiffuseMaterial> </GeometryModel3D.Material> </GeometryModel3D>
Über das MouseDown wird nun das Bild geändert.
private void UIElement3D_MouseDown(object sender, MouseButtonEventArgs e) { ModelUIElement3D element = sender as ModelUIElement3D; GeometryModel3D geo = element.Model as GeometryModel3D; DiffuseMaterial mat = (geo.Material as DiffuseMaterial); ImageBrush imgBrush = (mat.Brush as ImageBrush); Image myImage = new Image(); BitmapImage bitImage = new BitmapImage(); bitImage.BeginInit(); if (this.textBox1.Text == "gesetz") { bitImage.UriSource = new Uri("../../gesetz.jpg", UriKind.Relative); } else if (this.textBox1.Text == "person") { bitImage.UriSource = new Uri("../../person_icon.png", UriKind.Relative); } bitImage.EndInit(); imgBrush.ImageSource = bitImage; }
Jetzt zu meiner Frage. Wie kann ich das Bild z.B. über einen Button ändern?
Was ist der Sender, bzw. wie kann ich ihn "extern" ansprechen?ModelUIElement3D element = sender as ModelUIElement3D;
Viele Grüße
Darlo
-
über x:Name einen Namen zuweisen:
<ModelUIElement3D x:Name="cube1" MouseDown="UIElement3D_MouseDown">
Dann im c#-Teil drauf zugreifen...
object ui3 = Viewport3D1.FindName("cube1") as object;
Gruß
Darlo