WPF einbinden wie ?
-
Kann man eine WPF 3D Programmierung in ein Control packen ?
-
Wenn du unter WPF 3D Programmierung ein
Viewport3D
meinst, dann kannst du das wahrscheinlich mitElementHost
machen.ElementHost
erwartet einUIElement
und davon erbtViewport3D
.https://docs.microsoft.com/en-us/dotnet/api/system.windows.forms.integration.elementhost
-
Danke Euch, Danke, Danke es klappt wunderbar !!!
-
Soweit schon, aber jetzt ( Sorry nochmals ) : ich kenne mich mit wpf fast gar nicht aus:
In WinForms:
UserControl1 us = new UserControl1();
ElementHost eh = new ElementHost();
eh.Child = new UserControl1();
eh.Dock = DockStyle.Fill;
panel1.Controls.Add(eh);
us.Funktion1();
In WPF: eingebunden ins WinFormsProjekt,
class UserControl1 ...
..Funktion1()...
Background = Brushes.Red;
das panel1 wird nicht Rot, wieso ? Ich muss mich erst grundlegend reinlesen, und keine dummen Fragen stellen ...
-
Überlege noch mal, ob
eh.Child = new UserControl1();
richtig ist?
-
Ja das müsste, vorher habe ich auf dem WFP Fenster nur ein Button mit einem EventHändler in der WPF Klasse UserControl1 gehabt, das ging. Man kann wahrscheinlich die WFP-Klasse im eigenen Projekt haben.
-
und Funktion1() wird aufgerufen !
-
Ja klar wird
Funktion1
aufgerufen, nur auf dem (unsichtbaren) Objektus
!Wenn das jetzt nicht nur ein Flüchtigkeitsfehler bei dir gewesen ist, dann solltest du dir noch mal die Grundlagen über Objekte (bzw. Instanzen) durchlesen und verstehen, was
new
bedeutet.
-
ja ist klar, soweit verstehe ich das schon, jetzt geht's, danke für den Hinweis !
-
Nur ganz kurz zum Fehler: Im meinem fehlerhaften Programm werden zwei Objektinstanzen von UserControl1 erstellt. Einmal: UserControl1 us = new UserControl1(); und eh.Child = new UserControl1(); Auf dem zweiten Objekt, das an eh.Child gebunden wird, wird nicht Funktion1() aufgerufen, so dass das Panel nicht rot gefärbt wird. Funktion1() wird nur für das erste Objekt aufgerufen, und dies ist nicht das Objekt, das an eh.Child gebunden wurde. Es muss nicht heissen: eh.Child = new UserControl1();, sondern eh.Child = us; Deinen ersten Beitrag habe ich nicht gleich verstanden, aber schön, dass das ganze funktioniert. Da ich WinForms gegenüber WPF bevorzuge, kann ich mit WinForms nun auch 3D Graphik machen. Nochmals Danke Euch !!!