Entwickler-Ecke

WPF / Silverlight - WPF ListView: Names des ausgewählten Eintrags


rapgru - Mi 28.01.15 19:57
Titel: WPF ListView: Names des ausgewählten Eintrags
Heyho Leute,
Ich weiß nicht ob ich so wirklich so unfähig bin, aber ich komme nicht dahinter wie ich den Namen (nicht den Content) des SelectedItem herrausbekomme.
Danke schon im Vorhinein :D


jfheins - Mi 28.01.15 22:01

Üblicherweise läuft das ja so, dass man ein ViewModel hat.

Und das ViewModel hat dann eine ObservableCollection<T> Items und eine Property T CurrentItem. Letztere wird dann per TwoWay Binding an die Listbox oder die Listview (an die Property SelectedItem) geknüpft.
Im ViewModel greifst du dann einfach immer auf diese Property zu.

Soweit zum üblichen Vorgehen. Da du keinen Code gepostet hast, und auch sonst nur wenige Details, kann ich leider nicht erahnen, was du anders machst :nixweiss:


Christoph1972 - Mi 28.01.15 22:12

Den Namen von einem TreeViewItem kannst du so ermitteln:


C#-Quelltext
1:
2:
3:
4:
 private void treeViewTest_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<object> e)
 {
     string name = ((TreeViewItem)treeViewTest.ItemContainerGenerator.ContainerFromItem(e.NewValue)).Name;
 }


Vorausgesetzt du hast den Namen manuell zugewiesen. Eigentlich ist der Content doch viel interessanter als das Item ansich, oder? Kann aber auch gut sein das du etwas anderes meinst....


rapgru - Do 29.01.15 15:59

Naja ich entwickle ein Kontoverwaltungsprogramm (ähnlich wie Microsoft Money, welches jetzt nicht mehr funktioniert) nach eigenen Bedürfnissen und habe dafür eine ListView, wo man verschiedene Konten anlegen kann. Ich habe mich entschieden die infos von jedem neuen ListViewItem in eine Textdatei zu schreiben. Dem entsprechend habe ich jetzt mit Dateipfaden, etc. mich herumzuschlagen.

Danke für eure Antworten, wede das ganze wahrscheinlich mit ner Datenbank machen

LG rapgru


rapgru - Do 29.01.15 17:20

Hab das ganze jetzt auf Database aufgebaut und benötige nun den Content eines Item.

Muss ich den SelectedItem nach : splitten oder gibts da was viel einfacheres?


Th69 - Do 29.01.15 19:58

Du mußt SelectedItem nur in den richtigen Datentyp wandeln ('casten'):

C#-Quelltext
1:
2:
3:
4:
5:
var item = listView.SelectedItem as MyDataType; // hier den Datentyp einsetzen
if (item != null)
{
  // nun kannst du mittels 'item.' auf die Eigenschaften und Methoden zugreifen
}

Besser wäre aber die Vorgehensweise mittels MVVM und DataBinding (so wie jfheins schon vorgeschlagen hat), dann würdest du im ViewModel direkt auf die Eigenschaft zugreifen können.


rapgru - Do 29.01.15 21:56

Hey,

hab mein Problem gelöst, hab's mit String.Remove gemacht (also gepfuscht :D). Werd das mal auf die professionelle Art versuchen. Danke für eure Antworten.
Mit Datenbanken geht alles iwie viel einfacher :D