Laden...

List an ListView binden

Erstellt von DiscMaster vor 14 Jahren Letzter Beitrag vor 14 Jahren 1.190 Views
DiscMaster Themenstarter:in
316 Beiträge seit 2006
vor 14 Jahren
List an ListView binden

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

2.223 Beiträge seit 2005
vor 14 Jahren

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

DiscMaster Themenstarter:in
316 Beiträge seit 2006
vor 14 Jahren

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

2.223 Beiträge seit 2005
vor 14 Jahren

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