Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
List an ListView binden
DiscMaster
myCSharp.de - Member

Avatar #avatar-2602.jpg


Dabei seit:
Beiträge: 318

Themenstarter:

List an ListView binden

beantworten | zitieren | melden

Sers zusammen,

ich möchte eine List<> an ein ListView binden. Dazu habe ich im XAML folgendes zu stehen:
<ListView Name="lstTones" Grid.Row="1" Margin="5,2,3,5" ItemsSource="{Binding Path=Tones, Mode=OneWay}"  SelectionMode="Single" />

Tones ist die Property vom Typ List<String>. Einfach ein getter mit return drinne.

Der Konstruktor meines Fensters:

 public Default()
{
      InitializeComponent();
      InitializeTones(); // Instanziiert die List und fügt Elemente rein
}

So und jetzt die hochpräzise Problembeschreibung: Geht nicht!

Ich erhalte einfach keine Elemente im ListView.

Ich weiß das databinding + ListiView mehrfach diskutiert wurden, aber ich habe keine zu meinem Problem gefunden. Ich bin eigentlich ziemlich fit in C#, aber WPF ist bislang noch kein Komfort für mich, sondern vielmehr eine Tortur und scheinbar wahnsinnig kompliziert. Aber aller Anfang ist schwer und ich denke auch WPF will nur gerlernt werden bis man es zu schätzen weiß :)


Gruß DiscMaster
"Flache Hierarchien schaffen! Das muss konkret nicht unbedingt etwas bedeuten, kommt aber immer sehr gut an."
Bernd Stromberg
private Nachricht | Beiträge des Benutzers
Lars Schmitt
myCSharp.de - Experte

Avatar #avatar-2240.jpg


Dabei seit:
Beiträge: 2335
Herkunft: Witten

beantworten | zitieren | melden

Hallo DiscMaster ,

ich hoffe mal das die Klasse dem DataContext des Windows zugewiesen hast.

möglicherweise fehlt dir aber auch nur, die Implementierung des Interfaces INotifyPropertyChanged an deiner Klasse, durch die Implementierung dieses Interfaces erhälst du die möglichkeit, deine Gui von den änderungen an dem Property zu unterrichten.

Die andere und acuh bessere alternative wäre, dass du anstatt eine generische List vom Typ String, eine ObservableCollection vom Typ String benutzt.




Herzliche Grüße
Lars
private Nachricht | Beiträge des Benutzers
DiscMaster
myCSharp.de - Member

Avatar #avatar-2602.jpg


Dabei seit:
Beiträge: 318

Themenstarter:

beantworten | zitieren | melden

hmm, danke erstmal.

aber mein Problem bleibt weiterhin bestehen. Ich habe beides ausprobiert, aber das PropertyChanged scheint garnichts zu bringen, und die sache mit der ObservableCollection bringt auch nichts. (Ich habe einfach überall wo die List war ObservableCollection eingesetzt).

Tut mir leid wenn ich mich gerade bisschen dumm anstelle, aber das mit der Datenbindung ist mir noch nie richtig geglückt....
"Flache Hierarchien schaffen! Das muss konkret nicht unbedingt etwas bedeuten, kommt aber immer sehr gut an."
Bernd Stromberg
private Nachricht | Beiträge des Benutzers
Lars Schmitt
myCSharp.de - Experte

Avatar #avatar-2240.jpg


Dabei seit:
Beiträge: 2335
Herkunft: Witten

beantworten | zitieren | melden

Hallo DiscMaster,

hast du ein Code, wie diesen in deiner Code Behind datei enthalten?
Denn ansonsten weiß das WPF Fenster, nichts von deinen in der Code Behind Datei definierten Properties.

this.DataContext = this;

das wäre zwar nicht sauber, jedoch sollte das in deinem Fall ausreichen

um das ganze sauber zu bekommen suche doch mal MVVM

PS. Wichtig am INotifyChanged ist das das event auch gefeuert wird,
also bei jedem Setter sollte das Event mit dem PropertyName gefeuert werden.

Herzliche Grüße
Lars
private Nachricht | Beiträge des Benutzers