Mam tablicę bool wielkości 4 i chcę powiązać każdą komórkę z inną formant. Ta tablica bool reprezentuje 4 statusy (false = failure, true = success). Tablica BOOL jest propery z klasy:Jak uzyskać funkcjonalność INotifyPropertyChanged dla wartości w bool []?
class foo : INotifyPropertyChanged {
...
private bool[] _Statuses;
public bool[] Statuses
{
get {return Statuses;}
set {
Statuses = value;
OnPropertyChanged("Statuses");
}
}
w XAML są 4 sterujące, z których każdy wiąże się z jednej komórki do tablicy:
... Text="{Binding Path=Statuses[0]}" ...
... Text="{Binding Path=Statuses[1]}" ...
... Text="{Binding Path=Statuses[2]}" ...
... Text="{Binding Path=Statuses[3]}" ...
Problemem jest to, że powiadamia zdarzenie jest podniesiony tylko kiedy się zmienić tablicy i nie jest podniesione kiedy zmienić jedną wartość w tablicy, czyli następny wiersz kodu podnosi wydarzenie:
Statuses = new bool[4];
ale następna linia nie podnosi nawet t:
Statuses [0] = true;
Jak podnieść wydarzenie za każdym razem, gdy jedna komórka zostanie zmieniona?
Tak, przy użyciu ObservableCollection będzie najprostsza droga. –
'ObservableCollection' nie powiadamia o zmianie wartości dowolnego elementu wewnątrz niego. –
decyclone
@decyclone: informuje, czy n-ty element kolekcji został przeniesiony, wymieniony itp., Co jest tym, co robi kod OP. Masz rację, ponieważ nie poradzi sobie z przypadkiem, w którym T ma właściwości i nie implementuje INotifyPropertyChanged, ale uznałem, że wykracza to poza zakres pytania. –