У меня есть DataGrid WPF, для которого ItemsSource привязан к ObservableCollection>.Почему мой DataGrid заполняется только после прокрутки и выхода из вида?
Tuple - это простой класс, который я создал, который хранит 4 строки в массиве. Вот общая версия:
public class Tuple<T>: INotifyPropertyChanged
{
private int _size = 0;
public Tuple(int size)
{
this._size = size;
_objs = new T[_size];
}
private T[] _objs;
public T this[int i]
{
get
{
return _objs[i];
}
set
{
_objs[i] = value;
OnPropertyChanged(".[" + i + "]");
}
}
public void OnPropertyChanged(string name)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null)
{
handler(this, new PropertyChangedEventArgs(name));
}
}
public event PropertyChangedEventHandler PropertyChanged;
}
Во время компиляции я знаю, что есть 4 колонки, и поэтому я связать их с индексом кортеже. Во время выполнения Tuples добавляются в ObservableCollection и также модифицируются. Тем не менее, я бегу в проблему, где мой DataGrid только обновления, когда создается Кортеж ... То есть я получаю вывод, который выглядит следующим образом:
Данные присутствует в ObservableCollection, как если бы прокрутке DataGrid в и вне поля зрения, текст внутри ячеек появляется:
Любые советы?
Если это другой набор данных, откуда вы знаете эти пробелы, Предположим, вы там? –
@Bob. обновил его, чтобы отразить изменение одного и того же набора данных. Кроме того, я подтвердил это с помощью Watch on my collection и взлома во время выполнения. – Cramja
Событие ObservableCollection.CollectionChanged не запускается при изменении объекта внутри, только когда _itself_ изменяется. См. [Этот ответ] (http://stackoverflow.com/a/10286028/1466627). –