Ik ben bezig met mijn eerste Universal Windows App en ik moet zeggen dat het even wennen is. De meeste dingen kom ik na een nachtje slapen wel uit, maar nu heb ik iets wat ik niet helemaal begrijp en misschien doe ik het wel helemaal verkeerd, vandaar dat ik jullie raad vraag.
Situatie:
Ik heb een view:
Verder heb ik een ViewModelBase, met onderandere:
En tot slot heb ik mijn ViewModel met een ObservableCollection (Elk item heeft een id, naam en status), als ik daar iets verander is dit te zien in de UI en als ik iets verander in de UI wordt dat aangepast in de ObservableCollection.
Nu wil ik graag een functie binnen mijn ViewModel triggeren als de status van de ToggleSwitch veranderd. Ik dacht dit met behulp van de volgende code te doen:
Maar dat doet helemaal niks zo lijkt het. Zoek ik in de verkeerde richting? Ik wil dus graag weten van welk item in mijn ObservableCollection de status veranderd, zodat ik daarop kan reageren.
Met onderstaande code lukt het me wel te zien of er een item toegevoegd of verwijderd wordt, maar als alleen de status veranderd dan zie je geen replace.
Situatie:
Ik heb een view:
XML:
1
2
| <TextBlock Text="{Binding Name}" /> <ToggleSwitch IsOn="{Binding Status, Mode=TwoWay, Converter={StaticResource StatusBoolConverter}}" /> |
Verder heb ik een ViewModelBase, met onderandere:
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| public class ViewModelBase : INotifyPropertyChanged { public event PropertyChangedEventHandler PropertyChanged; protected void NotifyPropertyChanged(string propertyName) { PropertyChangedEventHandler handler = this.PropertyChanged; if (handler != null) { PropertyChangedEventArgs args = new PropertyChangedEventArgs(propertyName); handler(this, args); } } } |
En tot slot heb ik mijn ViewModel met een ObservableCollection (Elk item heeft een id, naam en status), als ik daar iets verander is dit te zien in de UI en als ik iets verander in de UI wordt dat aangepast in de ObservableCollection.
Nu wil ik graag een functie binnen mijn ViewModel triggeren als de status van de ToggleSwitch veranderd. Ik dacht dit met behulp van de volgende code te doen:
C#:
1
2
3
4
| this.PropertyChanged += (sender, args) => { Debug.WriteLine(args.PropertyName); }; |
Maar dat doet helemaal niks zo lijkt het. Zoek ik in de verkeerde richting? Ik wil dus graag weten van welk item in mijn ObservableCollection de status veranderd, zodat ik daarop kan reageren.
Met onderstaande code lukt het me wel te zien of er een item toegevoegd of verwijderd wordt, maar als alleen de status veranderd dan zie je geen replace.
C#:
1
| items.CollectionChanged += items_CollectionChanged; |