1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

Ausgewähltes Objekt einer Listbox herausfinden

Dieses Thema im Forum ".NET WPF & Silverlight" wurde erstellt von Saheeda, 29. Oktober 2014.

  1. Saheeda

    Saheeda Mitglied

    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 (Text):
    1.   <ListBox Name="_liste" ItemsSource="{Binding Collection, UpdateSourceTrigger=PropertyChanged}"
    2.   <Button Command="{Binding Delete}" CommandParameter="{Binding ElementName=_liste, Path=SelectedItem}"/>
    ViewModel Ist:
    Code (Text):
    1. ObservableCollection<string>Collection = new ObservableCollection<string>();
    2.  
    3.   private void Delete(string element) {
    4.   string[] split = element.Split(' ');
    5. Delete(split[2]);
    6.   }
    ViewModel Soll:
    Code (Text):
    1. ObservableCollection<object>Collection = new ObservableCollection<object>();
    2.   private void Delete(object element) {
    3. string name = element.Name;
    4. Delete(name);  
    5.  }
    Es funktioniert so, ich finde aber den split nicht so schön und würde es gern umgehen.
     
  2. Turri

    Turri Erfahrenes Mitglied

    Hallo,

    erstelle dir im ViewModel ein Property von dem Typ von den Daten die auch in der ListBox zu sehen sind.
    Code (Text):
    1. ...
    2. <ListBox SelectedItem="{Binding DeinProperty, UpdateSourceTrigger=PropertyChanged}">
    3. ...
     
    Zuletzt bearbeitet: 30. Oktober 2014
  3. Turri

    Turri Erfahrenes Mitglied

    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 (Text):
    1. public class Person
    2. {
    3.   ...
    4.   public string Name { get; set; }  
    5.   ...
    6. }
    Code (Text):
    1. <ListBox SelectedItem="{Binding SelectedPerson, UpdateSourceTrigger=PropertyChanged}" DisplayMemberPath="Name" ItemSource={Binding PersonenListeVomTypPerson>
     
Die Seite wird geladen...