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 :]
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 …
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 :]
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.
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 :]
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 :]
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.
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 :]