Entwickler-Ecke
WPF / Silverlight - Anfängerfrage: Steuerelemente
Phatpat - Mo 26.04.10 14:18
Titel: Anfängerfrage: Steuerelemente
Hallo Zusammen
Ich bin ein absoluter C#-Anfänger. Zu meiner Frage:
Ich erstelle ein WPF-Anwendung.
Anschliessend will ich aus einer Klasse auf ein Listboxelement zugreifen.
Window1.listBox.Items.Clear();
Wieso geht das nicht?
Vielen Dank für allfällige Antworten!!
Patrick
danielf - Mo 26.04.10 14:27
Hallo und :welcome:,
was meinst du, dass du "aus einer Klasse" auf das Listboxelement zugreifenwillst?
Ist es die partial class des Window? Dann sollte es gehen.
Handelt es sich dabei um eine andere Klasse funktioniert es so nicht, weil die Sichtbarkeit nicht gegeben ist. Dann müsstest du das Steuerelement explizit sichtbar machen (etwa über ein property: public ListBox { get { return listBox; } }). Dies ist aber keine gute Lösung. Um eine bessere zu finden, sind ein paar extra Informationen notwendig.
Gruß
Phatpat - Mo 26.04.10 14:39
vielen dank schon mal für deine Antwort!!
nein nicht aus der partial class Window, sondern aus einer anderen...
kann ich einfach in der der class Window1 schreiben:
public Listbox
{
get
{
return Listbox;
}
}
?
oder was wäre denn eine gute Lösung? Welche Informationen bräuchtest du?
danielf - Mo 26.04.10 15:10
Du könntest das so schreiben, aber wie gesagt, das wäre nicht "schön".
Folgende Struktur hat sich in der Software-Entwicklung durchgesetzt:
Daten - Logik - Präsentation
Soll heißen auf der einen Seite hast du Daten. Dazwisch hast du evtl. eine logische Schicht die etwa die Daten sammelt, sortiert oder filtert. Dein Window ist ja wahrscheinlich dafür da, Daten anzuzeigen. Dann sollte das Window als Schnittstelle nur die Daten haben. Sprich in etwa ein Property Person um eine Person darzustellen:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| public Person Person { get { return _person; } set { if (_person != value) { _person = value; ShowPerson(_person); } } } |
Du solltest keine spezifischen Details der Präsentationsschicht preisgeben. Sprich in deinem Fall das du ein ListBox verwendest. Ansonsten hast du später Probleme, wenn du aus der Listbox ein TreeView machst.
Informationen die fehlen sind allgemein: Was willst du mit ListBox bezwecken, welche Daten werden getauscht, was hast du später noch damit vor?
Phatpat - Mo 26.04.10 15:13
das sit mir alles noch ein wenig zu hoch :)
ich versuch es mal umzusetzen!!!! Vielen Dank!! :-)
JüTho - Mo 26.04.10 15:17
Hallo und noch :welcome:
Grundsätzlich: Eine Klasse hat auf ein Objekt einer anderen Klasse nur Zugriff über eine fest definierte "Schnittstelle" (das hat jetzt nichts mit Interface zu tun). Eine Klasse, die ein Objekt erzeugt, hat Kenntnis über die Elemente, die als public deklariert wurden. Ein Objekt, das von einer anderen Klasse erzeugt wurde, hat keinerlei Kenntnis über die erzeugende Klasse. Controls innerhalb eines Formulars werden eigentlich niemals als public deklariert; wenn überhaupt, dann werden die Inhalte "von außen" über Eigenschaften oder public-Methoden beeinflusst.
Konkret: 1. Wenn du von einem Objekt sprichst, das vom Formular erzeugt wurde, kann das Formular dieses Objekt beeinflussen, aber nicht umgekehrt. Wenn es nötig ist, dann holt sich das Formular bestimmte Informationen per Eigenschaft von diesem Objekt. Wenn es sich um eine automatische "Rückgabe" von Werten handelt, geht das über einen Delegate. (Das führt aber zu weit, das jetzt ins Blaue hinein zu erläutern.)
2. Wenn das "andere" Objekt das Formular erzeugt hat, hat es direkten Einfluss auf das Formular, aber nicht unmittelbar auf eine ListBox, sondern z.B. auf eine Methode, die (innerhalb des Formulars) die ListBox beeinflusst.
Deshalb will Daniel die Situation genauer wissen: In welcher Beziehung stehen Formular und Objekt? Wie sollen sich Eigenheiten oder Elemente beeinflussen?
Gruß Jürgen
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!