Halli hallo,
wie kann ich denn eine von mir Typisierte Liste List<Kontakt> per binding an eine Listbox hängen.
Die Liste enthält aber verschiedene Typen, von DateTime, bools, strings.
wie bewerkstellige ich das?
schonmal danke fürs lesen.
gruß ScoobyDoh!
:::
Servus,
Es wäre toll wenn man erst schaut und dann Frage 😉
Erster Treffer bei Google.
http://wblum.org/listbind/net3/index.html
Gruß
private int Main()
{
string programmingSkills = getMySkills("programming")
return = 1;
}
Hi Smou,
die Seite kannt ich schon, trotzdem danke, ich glaub ich mag das heute net ganz kapieren wie das funktioniert.
Gbit es eigentlich noch alternative Möglichkeiten, wie man eine Listbox mit Information von einer Liste füllt?
gruß ScoobyDoh!
:::
Was ist schwer an einer ObservableCollection<T> zu verstehen?
Da steht doch ganz genau was du machen musst um deine Daten zu binden.
Mach dir eine Klasse
class Kontakte : ObservableCollection<Kontakt>
Die kannst du dann an deine Listbox binden.
be the hammer, not the nail!
Ich glaube das Problem ist hier nicht das Binden an die ListBox sondern eher sowas wie eine Master/Detail ansicht zu realisieren
Hier sind einige Links
Silverlight Business Apps
Create Silverlight Master
MfG
ProGamer*Der Sinn Des Lebens Ist Es, Den Sinn Des Lebens Zu Finden!
*"Wenn Unrecht zu Recht wird dann wird Widerstand zur Pflicht."
*"Ignorance simplifies ANY problem."
*"Stoppt die Piraterie der Musikindustrie"
Hallo,
danke für eure Antworten, leider bin ich immer noch nicht weitergekommen.
Ich Serialisiere die Liste aus einer XML und den Inhalt meines Arrays/Liste möchte ich dann an die Listbox binden.
:::
Ich hab jetzt echt rumprobiert und es funktionierte nichts.
Also wie war das nun genau gemeint?
Ich erklär nochmal kurz wies bei mir jetz ausseiht:
Ich deseralisiere eine XML datei und lade mir somit eine Liste vom Typ Kontakt und diese möchte ich gerne an die ListBox dranhängen. Und zwar soll dann in der ersten Zeile der jeweilige Eintrag und in der zweiten dann der Wert stehen.
Die Liste einfach aub ObservableCollection umzustellen hat erstmal nichts gebracht.
Und wie ist das mit dieser weiteren Klasse gemeint?
class Kontakte : ObservableCollection<Kontakt>
Und das wars... und dann kann ich das an die Listbox binden? Das hab ich nun auch versucht, aber da geschah auch nichts, auch keine Fehlermeldung.
gruß ScoobyDoh!
:::
Hallo,
hast du denn jetzt überhaupt das Binding bei der ListBox aktiviert?
Es gibt zwei Möglichkeiten: entweder wie im Link von Smou über den DataContext und Überschreiben der ToString()-Methode oder aber du erstellst dir schon entsprechende Unterelemente in deiner ListBox und zeigst dort dann per Binding die einzelnen Daten an:
<TextBlock Text="{Binding Path=<Spalte>}" />
(wobei <Spalte> dann jeweils die Eigenschaft deiner Kontakt-Klasse wäre)
Und noch eine weitere Möglichkeit wäre das direkte Binden der XML-Datei mittels XmlDataProvider.
@TH69,
ah danke 😉
Das hat mir zumindest das verständnis schonmal um einiges weitergebracht.
Hab jetz auch schon alle möglichen Ergebnisse ghabt, bis auf des was ich haben will.
in meiner Liste, an der Position X, möchte ich allle Eigenschaften mir in der Liste Anzeigen lassen.
:::
Was hindert sich daran?
Der erste Post enthielt den Link mit allen Infos und Beispielen die du brauchst.
be the hammer, not the nail!
@aequitas:
versteh schon das man hier angepisst is wenn jemand jeden scheiss nachfrägt, aber ich hab das Beispiel von oben den ganzen Nachmittag durchgearbeitet und ich bekoms einfach net hin.
:::
Weil du dich irgendwie anstellst ^^
xaml.cs:
public class MyWindow : Window
{
public MyWindow()
{
InitializeComponent();
DataContext = this; // Damit das Binding weiß wo es suchen muss
Contacts = new ObservableCollection<Contact>();
foreach (var contact in FromXml())
Contacts.Add(contact);
}
public ObservableCollection<Contact> Contacts { get; set; }
}
xaml:
<Window ...>
<ListBox ItemsSource="{Binding Contacts}">
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Name}" /> <!-- Contact.Name anzeigen -->
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</Window>
Wenn du mit all den Infos von den vorherigen Posts nicht klar kommst solltest du uns vllt einfach mal in einem snippet zeigen wie du das überhaupt versuchts...
Ich vermute das es nicht am Binding selbst liegst sondern am fehlendem Basisverständnis für die ganze Geschichte.
Ich empfehle dir dazu ein Buch zu kaufen und dich langsam in komplizierte Dinge einzuarbeiten.
Versteh mich nicht falsch... aber wenn man noch kein Fundament hat auf dem man aufbauen kann bringt das alles nix.
lg
private int Main()
{
string programmingSkills = getMySkills("programming")
return = 1;
}
...
Ich empfehle dir dazu ein Buch zu kaufen und dich langsam in komplizierte Dinge einzuarbeiten.
Versteh mich nicht falsch... aber wenn man noch kein Fundament hat auf dem man aufbauen kann bringt das alles nix.
lg
Kein Ding ist auch vollkommen verständlich 😉
Nur muss das jetzt in meinem Projekt einfach schnell funktionieren das ich weitermachen kann.
Bevor ich das Projekt anfing war mir ja noch gar nicht klar das ich DataBinding benötige.
Soweit funzt das jetzt auch. Nur noch net ganz richtig. Kann sein das ich nochmal die Hilfe brauche, derweil komm ich aber weiter.
Aber mir ist auch klar geworden das, das Thema DataBinding doch mehr einarbeitungszeit benötigt wie ich jetzt zur verfügung habe.
Trotzdem danke für eure Geduld und vielen dank an "David W" für den sehr hilfreichen Beitrag.
gruß ScoobyDoh!
:::
So, nochmal danke für die Hilfe, jetz funktioniert es.
eine Frage hätt ich noch, bei mir ist es nun so, das bestimmte Felder auch leer sein können, also keinen Wert enthalten.
Durch das Binding wird dann automatisch der Wert 0 zurückgegeben. wie kann ich das unterbinden?.
Gibt es da eine Einstellung / Funktion?
Oder muss ich mir mit einer Abfrage behelfen?
:::
Servus,
wenn der wert bei dem nichts drin steht bzw den du nicht befüllt hast wird der standard wert benutzt. das ist bei einem Int natürlich 0 und bei einem String null.
Um gehen... hmmm fällt mir spontan keine praktische lösung ein aber es geht mit sicherheit da beim binding soweit ich weiß die toString methode aufgerufen wird.
Eine Einstellung kenn ich spontan auch keine aber vllt die anderen.
gruß
private int Main()
{
string programmingSkills = getMySkills("programming")
return = 1;
}
Hallihallo,
ich meld mich nochmal zurück und zwar hab ich noch ein paar verständnisfragen die sich mir noch nicht ganz geklärt haben.
DataBinding an die Textpropertie von Textboxen möglich?
Ich möchte nun in meine Texblöcke z.B. einen Festen Text angeben und dahinter die vom Databinding eingefügten Daten haben.
also z.B. sowas (nur zur verdeutlichung)
<TextBlock Text="Ortschaft: {Binding Path=Ort}"
:::
Hi,
Ja, du kannst an die Text-Property von der TextBox binden
Eine Mischung von statischem Text und Binding im Markup ist nicht möglich. Stattdessen würde ich ein zusätzliches Label für den Text "Ortschaft:" definieren:
<StackPanel>
<Label Content="Ortschaft:"/>
<TextBlock Text="{Binding Ort}" Margin="10,0,0,0"/>
</StackPanel>
Ein andere Möglichkeit wäre, einen Converter zu schreiben, der dir den Text zusammenbaut. Beispiel siehe hier:
http://www.codeproject.com/KB/WPF/MvvmDynamicCommands.aspx
Gruß, toolsche