Benutzer mit den meisten Antworten
Listview C# WPF

Frage
-
Hallo,
ich habe ein Listview und auf jedem Listviewitem ist ein Label. Je nach Inhalt des Labels soll die Visibilty-Eigenschaft eines Buttons der Ebenfalls auf dem Item ist geändert werden.
Dies funktioniert für die ersten 4 Items auch aber beim fünften und allen folgenden Items bekomm ich null zurück.
Kann mir jemand bitte helfen?
Hier ist mein Code dazu
for (int i = 0; i < lv_out.Items.Count; i++) { lv_out.UpdateLayout(); var item = lv_out.Items[i + 4]; DataTemplate dt = lv_out.ItemTemplate; ListBoxItem lbi =(lv_out.ItemContainerGenerator.ContainerFromItem(item)) as ListBoxItem; ContentPresenter cp = GetFrameworkElementByName<ContentPresenter>(lbi); Button btn = (dt.FindName("btn_zurückziehen", cp)) as Button; Label lbl = (dt.FindName("lbl_status", cp)) as Label; if (lbl.Content.ToString() == "Wartend...") { btn.Visibility = Visibility.Visible; } }
Antworten
-
Hi B_D_,
ich würde anstelle solch einer umständlichen Lösung die Datenobjekte in einer Liste halten, diese Liste an das ListView als ItemsSource binden und dann in der Oberfläche die Visibility an "Wartend.." mit einem Converter binden. Das ist einfach, sehr übersichtlich und fehlertoerant.--
Viele Grüsse
Peter Fleischer (ehem. MVP)
Meine Homepage mit Tipps und Tricks- Als Antwort vorgeschlagen Ivan DragovMicrosoft contingent staff, Moderator Montag, 30. Oktober 2017 08:33
- Als Antwort markiert Ivan DragovMicrosoft contingent staff, Moderator Freitag, 3. November 2017 07:44
Alle Antworten
-
Hi B_D_,
ich würde anstelle solch einer umständlichen Lösung die Datenobjekte in einer Liste halten, diese Liste an das ListView als ItemsSource binden und dann in der Oberfläche die Visibility an "Wartend.." mit einem Converter binden. Das ist einfach, sehr übersichtlich und fehlertoerant.--
Viele Grüsse
Peter Fleischer (ehem. MVP)
Meine Homepage mit Tipps und Tricks- Als Antwort vorgeschlagen Ivan DragovMicrosoft contingent staff, Moderator Montag, 30. Oktober 2017 08:33
- Als Antwort markiert Ivan DragovMicrosoft contingent staff, Moderator Freitag, 3. November 2017 07:44
-
Hey,
mich würde interessieren, ob du denn gar keine ArgumentOutOfRange-Exception in der Zeile hier bekommst.
var item = lv_out.Items[i + 4];
Ich vermute auch, dass dein Code für die ersten vier Elemente "funktioniert", weil sie übersprungen werden - ohne es allerdings getestet zu haben.
Ansonsten musst du das aber nicht so umständlich schreiben, siehe Peters Antwort.
Beste Grüße
Vergiss nicht, die Antwort auf deine Frage zu markieren und hilfreiche Beiträge zu bewerten, damit auch andere schnell die Lösung für ihr Problem finden können - und wir nebenbei noch ein paar Punkte verdienen. :)