Ausgewähltes Objekt einer Listbox herausfinden

#1
Hallo,

ich habe im ViewModel eine ObservableCollection, die an eine Listbox gebunden ist.
Wenn ich die Collection vom Typ meines Objektes mache, bekomme ich in der Listbox nur den namespace des Objekts angezeigt, als Collection<string> ist zwar wiederum die Ausgabe richtig, bereitet mir aber beim Bearbeiten des gewählten Elements Probleme, da ich im ViewModel nur eine bestimmte Eigenschaft des Objekts brauche. Das ausgewählte Element übergebe ich momentan noch als CommandParameter:

XAML:
Code:
  <ListBox Name="_liste" ItemsSource="{Binding Collection, UpdateSourceTrigger=PropertyChanged}" 
  <Button Command="{Binding Delete}" CommandParameter="{Binding ElementName=_liste, Path=SelectedItem}"/>
ViewModel Ist:
Code:
ObservableCollection<string>Collection = new ObservableCollection<string>();

  private void Delete(string element) {
  string[] split = element.Split(' ');
Delete(split[2]);
  }
ViewModel Soll:
Code:
ObservableCollection<object>Collection = new ObservableCollection<object>();
  private void Delete(object element) {
string name = element.Name;
Delete(name);  
 }
Es funktioniert so, ich finde aber den split nicht so schön und würde es gern umgehen.
 

Turri

Erfahrenes Mitglied
#2
Hallo,

erstelle dir im ViewModel ein Property von dem Typ von den Daten die auch in der ListBox zu sehen sind.
Code:
...
<ListBox SelectedItem="{Binding DeinProperty, UpdateSourceTrigger=PropertyChanged}">
...
 
Zuletzt bearbeitet:

Turri

Erfahrenes Mitglied
#3
Noch ein Hinweis:
.... bekomme ich in der Listbox nur den namespace des Objekts angezeigt,....

Schau dir mal diese Eigenschaft DisplayMemberPath an.
Damit kannst du dir ein Property aus deiner Klasse rauspicken, welches angezeigt wird.

Codeschnipsel:
Code:
public class Person
{
  ...
  public string Name { get; set; }  
  ...
}
Code:
<ListBox SelectedItem="{Binding SelectedPerson, UpdateSourceTrigger=PropertyChanged}" DisplayMemberPath="Name" ItemSource={Binding PersonenListeVomTypPerson>