Laden...

[erledigt] WPF - Zugriff von Usercontrol auf Klasse des Parent Fensters

Erstellt von m.grauber vor 13 Jahren Letzter Beitrag vor 13 Jahren 5.722 Views
M
m.grauber Themenstarter:in
343 Beiträge seit 2010
vor 13 Jahren
[erledigt] WPF - Zugriff von Usercontrol auf Klasse des Parent Fensters

Hallo,

in einigen meiner WPF-Fenster wird eine "public class MyClass" erstellt (direkt im Codebehind der Klasse). MyClass besitzt einen Member "Y" (int).

In einem selbst erstellten WPF Usercontrol möchte ich auf diese Klasse zugreifen.


Type windowType = Window.GetWindow(Parent).GetType();
((windowType)Window.GetWindow(Parent)).MyClass.Y=1;

Leider klappt das nicht. 1. erkennt C# nicht "windowType" als echter Typ an und 2. wird MyClass nicht erkannt.

Das casting nach ((Window)Window.GetWindow(Parent))... würde mir nichts bringen, da im Standard Window keine Klasse MyClass existiert.

Wie kann ich auf MyClass.Y sonst zugreifen? 🙁 (verzweifelt)

Vielen Dank!

Mfg
Michael

PS: Ich stelle nur Fragen, wenn ich in Büchern, im Web und in Foren nichts gefunden habe. Dumme Fragen bitte ich zu entschuldigen!

:] VISUAL STUDIO 2017 + .NET FRAMEWORK 4.5 + SQL-Server 2012 :]

L
45 Beiträge seit 2008
vor 13 Jahren

Moin,

die Klasse im Parent statisch deklarieren?



private static MyClass _myClass = new MyClass();
public static MyClass MyClass
{
  get { return _myClass; }
}


Wie man das Property nun implementiert ist hier Nebensache. 😃

MfG lbm1305

Debugger sind was für Memmen! Echte Männer kompilieren direkt auf die Master CD …

M
m.grauber Themenstarter:in
343 Beiträge seit 2010
vor 13 Jahren

Hallo Ibm1305,

Danke, Geht aber leider nicht, da es auch mit mehreren Fensterinstanzen laufen muss. 🙁

Noch eine Idee?

Grüße!

Mfg
Michael

PS: Ich stelle nur Fragen, wenn ich in Büchern, im Web und in Foren nichts gefunden habe. Dumme Fragen bitte ich zu entschuldigen!

:] VISUAL STUDIO 2017 + .NET FRAMEWORK 4.5 + SQL-Server 2012 :]

6.862 Beiträge seit 2003
vor 13 Jahren

Hallo,

die Richtung vom Datenfluss ist falschherum. Das UserControl sollte niemals was vom Parent wissen müssen. Mach im UserControl ein Property welches vom Parent aus gesetzt wird.

Baka wa shinanakya naoranai.

Mein XING Profil.

M
m.grauber Themenstarter:in
343 Beiträge seit 2010
vor 13 Jahren

Hallo Talla,

wiedereinmal vielen Dank für Deinen Beistand! =)

Mach im UserControl ein Property welches vom Parent aus gesetzt wird.

-> Das geht leider auch nicht. Das Usercontrol besitzt z. B. Buttons, die beim Klick Code ausführen. Daher kann ich diesen Code nicht so einfach vom Parent aus aufrufen.

Weiterhin können auch mehrere Usercontrols auf einer Form (und auf mehreren Forms) platziert werden. (Genau so wie z. B. ein normales WPF-Control)

Ich kann auch niemals alle jemals benötigten Member des Parent Forms immer an die Usercontrols übermitteln (das wäre viel zu viel Datensalat)

Praktisch habe ich nur folgendes Problem:

**
Wie kann ich ein casting in den Typ veranlassen, der dem Parent Window entspricht und dabei den Typ nicht explizit angeben, sondern dynamisch ermitteln❔**


(parentWindow).FindName("MyClass"); // geht leider auch nicht

Noch irgendwelche Ideen?

Danke!

Mfg
Michael

PS: Ich stelle nur Fragen, wenn ich in Büchern, im Web und in Foren nichts gefunden habe. Dumme Fragen bitte ich zu entschuldigen!

:] VISUAL STUDIO 2017 + .NET FRAMEWORK 4.5 + SQL-Server 2012 :]

M
m.grauber Themenstarter:in
343 Beiträge seit 2010
vor 13 Jahren

Hallo,

über Reflection komme ich auf MyClass. Nur wie komme ich an den Member "Y"?


var MyObject = (parentWindow.GetType().GetMember("MyClass")[0]);

liefert mir ein MyClass-Objekt. Wie kann ich jedoch auf den Class-Member "Y" zugreifen, der sich in MyClass befindet?

Gibt es da draußen einen Reflection Profi der das weiß?

Vielen Dank!

Grüße

Mfg
Michael

PS: Ich stelle nur Fragen, wenn ich in Büchern, im Web und in Foren nichts gefunden habe. Dumme Fragen bitte ich zu entschuldigen!

:] VISUAL STUDIO 2017 + .NET FRAMEWORK 4.5 + SQL-Server 2012 :]

6.862 Beiträge seit 2003
vor 13 Jahren

Hallo,

Ich kann auch niemals alle jemals benötigten Member des Parent Forms immer an die Usercontrols übermitteln (

Sowas ist auch nie nötig. Wie schon gesagt sollte das Child nie wissen müssen in was für nen Parent es ist. Wenn du Daten teilen musst dann tu das über Objekte die der Parent dem UserControl mitgibt. Und für das Problem mit dem Klicks - schau dir an was Commands sind. Damit erreicht man ne sinnvolle Trennung in WPF. Aber niemals die Richtung wo du versuchst.

Baka wa shinanakya naoranai.

Mein XING Profil.

M
m.grauber Themenstarter:in
343 Beiträge seit 2010
vor 13 Jahren

Hallo Talla,

danke nochmals! 👍 Ja, jetzt habe ich es als Objekt übergeben und es klappt jetzt. Ich dachte, das könnte ich sparen. Aber es wird ja ohnehin mit Referenzen gearbeitet, weshalb das Programm sich dadurch nicht weiter im Speicher aufbläht.

Gruß!

Mfg
Michael

PS: Ich stelle nur Fragen, wenn ich in Büchern, im Web und in Foren nichts gefunden habe. Dumme Fragen bitte ich zu entschuldigen!

:] VISUAL STUDIO 2017 + .NET FRAMEWORK 4.5 + SQL-Server 2012 :]