Этот вопрос является результатом моего предыдущего вопроса DataGrid - выбор сетки сбрасывается при поступлении новых данных
====================================================================
У меня есть такая DataGrid
<DataGrid AutoGenerateColumns="True" HorizontalAlignment="Stretch" Name="dataGrid1" VerticalAlignment="Stretch" ItemsSource="{Binding DataList}" IsReadOnly="True"/>
В моем ViewModel у меня есть такое поле:
public ObservableCollection<ConsoleData> DataList { get; set; }
И такой метод, который вызывается каждую секунду:
private void model_DataArrived(List<ConsoleData> dataList)
{
DataList.Clear();
dataList.ForEach(x => DataList.Add(x));
}
=====================================================================
Мы выяснили, что, поскольку я вызываю DataList.Clear
выбор в элементе управления пользовательского интерфейсаочищен, и я не хочу, чтобы это произошло.Поэтому, скорее всего, я не должен заменять экземпляры ConsoleData
на ViewModel
, вместо этого я должен update
эти экземпляры.
Но ObservableCollection
наблюдает за добавлением / удалением, я думаю, и не наблюдает за update
, не так ли?Так что, если я буду update
, экземпляры DataBinding
не будут работать?
Другая проблема с текущим приложением состоит в том, что dataList.ForEach(x => DataList.Add(x));
заставляет привязку данных выполнять на каждой итерации, а не только в конце?
В целом, как правильно делать то, что я хочу делать, потому что текущее приложение не работает и имеет слишком много проблем ...