Aktualizacja ListView po usuwaniu/dodaniu/modyfikacji

0

Cześć!
Wybieram z listview jeden wiersz(item) i następnie za pomocą przycisków : Modyfikuj,usuń, dodaj(tutaj nie muszę wybierać) chcę zmienić zawartość wiersza lub go usunąć. Itemsource do listview jest listą mojej klasy. Wszystko ładnie się usuwa, jednak mam następujące problemy:

  1. Po usunięciu wybranego wierszu, nie znika on z ListView (wiem, że znika z Listy). Jak przekazać konieczność odświeżenia listy? Próbowałem z Itemsource i propertychanged ale to chyba przy zmianie całego źródła zadziała?
  2. Jeśli otwieram kolejne okno, w którym pobieram w textboxach od użytkownika zmienne, które później chce dodać do listy. Jak mogę wywołać tą metodę z poziomu innego okna tak żeby zwróciła mi te elementy (obiekt).

Dodam, że piszę zgodnie ze wzorcem MVVM.

Byłbym wdzięczny za wskazówkę!

0

Ad 1) Słowa kluczowe: ObservableCollection, NotifyProperyChanged, BindingMode: TwoWay
Ad 2) Jest kilka mozliwosci, mozesz upublicznic np liste z pierwszego okna i dzialac na niej z posiomu drugiego okna. Mozna tez zrobic to zgodnie z MVVMem i dzialac na viewModelach

0
  1. Właśnie o tym czytałem, że z listą może nie wypalić. Musiałbym sporo zmienić. Mogę konwertować listę na observablecollection i zbindować z itemsource. Czy to wystarczy?
    Okej usuwanie zrobione, napisałem metodę konwertującą, poprawiłem bindowanie i teraz operauję na observablecollection
  2. Robię wszystko w osobnych viewmodelach i własnie się zastanawiałem jak "wydobyć z tego drugiego okna" zmieniany element. Spróbuje z public.

Cały view model dziedziczy po INotifyPropertyChanged, dlatego chciałem wykorzystać listę, bo jest ona przekazywana z poprzedniego okna (wyszukiwania).

0

Lista działa, w 70%, przy modyfikowaniu wszystkie wartości się zmieniają, ale nie zmienia się wyświetlany rekord na liście. Przy dodawaniu i usuwaniu elementów wszystko od razu się aktualizuje.

Dodatkowy problem, który się pojawił. Mam wartość zamówienia, który jest sumą wartości poszczególnych elementów, wartość ta zmienia się po dodaniu wiersza w liście, jednak w Textboxie dalej wyświetlana jest stara wartość. Wina bindowania? Jeśli tak to jak powinno ono wyglądać? Mam tak:
<TextBox HorizontalAlignment="Left" Height="23" Margin="212,329,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="120" Grid.Row="1" Text="{Binding Path=Value,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"/>

1 użytkowników online, w tym zalogowanych: 0, gości: 1