private static void OnChangedCurrentMarketMemberChange(DependencyObject doj, DependencyPropertyChangedEventArgs dp) { PriceHistory_BC uc1 = doj as PriceHistory_BC; //первоначальная инициализация (в конструкторе рушится, видимо свойства зависимости на том этапе еще не созданы) if (uc1?._priceHistoryDataSource.Count == 0 && uc1.CurrentMarket.Mbi.Count > 0) { for (int i = 1; i < uc1.CurrentMarket.Mbi.Count; i++) //начинаем с i = 1, иначе надо проверять на s.Dt != "0:00:00" { PriceHistoryData s = uc1.GetPriceHistoryDataFromCurrentMarcetByIndex(i); //if (s.Dt != "0:00:00") // в записанном файле первая запись "как бы" такая (хотя это и не так). Можно открыть и убедиться // Если не нее потом щелкать - все рушится. uc1._priceHistoryDataSource.Add(s); } } else if (uc1?.CurrentMarket != null) { int i = uc1.CurrentMarket.Mbi.Count - 1; PriceHistoryData s = uc1.GetPriceHistoryDataFromCurrentMarcetByIndex(i); uc1._priceHistoryDataSource.Add(s); } //если не стоит галка, то выделяем последнюю запись (ReSharper зачем-то еще на null проверил... ну и пусть оно будет) if (uc1?.CurrentMarket != null && uc1.cb.IsChecked != null && (bool)uc1.cb.IsChecked) { uc1.MoveToLast(); } }
private PriceHistoryData GetPriceHistoryDataFromCurrentMarcetByIndex(int i) { PriceHistoryData data = new PriceHistoryData(); data.Number = i; data.Dt = CurrentMarket.Mbi[i].LastByte.ToLongTimeString(); data.BestCase = CurrentMarket.Mbi[i].BestCase == TradeCases.empty ? string.Empty : "Ok"; return(data); }