private static void OnValuesPropertyChanged(DependencyObject sourceObject, DependencyPropertyChangedEventArgs e) { Grid grid = sourceObject as Grid; //TODO: Сделать оптимизацию - вместо удаления ячеек сделать замену контента (если возможно, и если нужно) grid.Children.OfType <ValueCell>().ToList().ForEach(_ => grid.Children.Remove(_)); IList <double> newValues = e.NewValue as IList <double>; double count = Math.Sqrt(newValues.Count); int valueIndex = 0; for (int i = 0; i < count; i++) { for (int t = 0; t < count; t++) { ValueCell valueCell = new ValueCell(newValues[valueIndex]); valueCell.CreateBorder(); grid.Children.Add(valueCell); valueIndex++; } ValueCell.ResetColumnIndex(); ValueCell.IncrementRowIndex(); } ValueCell.ResetAllIndexes(); }