[WPF] Listview Buttonindex

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von FantaZimt.

    [WPF] Listview Buttonindex

    Hey,

    Ich habe ein Listview mit einem Image, Label und Button. Ich würde jetzt gerne auf den Button klicken und damit dann eine Datei runterladen.
    Momentan habe ich es so gelöst: Zeile anklicken -> Danach auf den Download-Button drücken.

    Allerdings finde ich es ein wenig unnötig, zuerst die Zeile anzuklicken (damit ich dann mit SelectedIndex arbeiten kann). Viel besser finde ich es, wenn ich einfach nur auf den Download-Button drücken könnte.

    Meine Frage ist jetzt, wie kann ich den Index bestimmen, wenn ich die Zeile nicht angeklickt habe.
    Entweder habe ich mich falsch ausgedrückt, oder verstehe nicht so ganz was du meinst.

    Ich habe auf einem Webserver eine Konfig-Datei, die mein Programm läd und den Inhalt im Listview wiedergibt.
    Enthalten sind Bild, Ersteller und der Downloadlink.

    Da die Buttons ja erst während der Laufzeit erstellt werden, kann ich sie ja nicht wirklich binden.

    FantaZimt schrieb:

    verstehe nicht so ganz was du meinst.
    Das kann sein.
    Mag daran liegen, dass vielleicht der MVVM-Pattern dir nicht bekannt ist.
    Da ist es durchaus vorgesehen, dass Buttons zur Laufzeit erstellt werden - das wird grad durch das Wpf-Bindungs-System bewirkt.
    Ich verstehe dich so, dass deine Config mehrere Datensätze enthält, jeder mit Bild, Ersteller, DownloadLink.
    Ja, und in Wpf würde man nun ein Datensatz-Klasse basteln, mit Bild, Ersteller, DownloadLink.
    Und ein DataTemplate, mit Bild, Textblock, DownloadButton, und diese DataTemplate würde man an die DatensatzKlasse binden.
    Weiters bindet man eine Liste von derlei Datensatz-Objekten an die ListView.
    Zur Laufzeit lädt man dann die Datensätze aus der Konfig in die Liste von Datensatz-Objekten.
    Mehr ist nicht zu tun - das BindungsSystem erzeugt für jeden Datensatz Bild, Textblock, DownloadButton im ListView.
    Im Datensatz-Objekt ist auch eine Methode, die den Klick des DownloadButtons empfängt.
    Alternativ kann man das Button-Command auch ans MainModel binden - dann laufen die ButtonKlickse aller Datensätze auf eine einzige Methode - und übergeben ihr den geklicksten Datensatz (nicht den Index).

    Wie gesagt: der MVVM-Pattern ist fundamental inne WPF, wenn dir der nicht bekannt ist, solltest du das unbedingt recherchieren, weil du ansonsten unterwegs zu etwas abwegigen bist, bei dem dir kaum jemand helfen kann.
    Etwa im Wpf-Tutorial-Bereich von VBP gibts einige einschlägige Tuts dazu.

    Etwa in Grundlagen - MVVM-Anwendungs-Struktur - da gibt es einen Delete-Button im Person-Template, der zur Löschung des angebundenen Person-Datensatzes führt. Auf gleiche Weise könnte natürlich auch ein Download ausgeführt werden.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „ErfinderDesRades“ ()