Как вывести одномерный массив чисел в виде таблицы?

Здравствуйте. Есть одномерный массив чисел. Необходимо вывести его в виде таблицы с фиксированным количеством столбцов.
Например есть массив {1, 2, 3, 4, 5, 6, 7, 8}.
В xaml его нужно представить в таком виде:
1 2 3 4
5 6 7 8

Не знаю даже в какую сторону копать.
  • Вопрос задан
  • 4600 просмотров
Пригласить эксперта
Ответы на вопрос 3
Легче всего копать в сторону "сделать двумерный массив из одномерного, и его байндить на xaml".

Идея вообще в том, что проще подготовить данные под UI(чаще, намного проще), чем мучиться подстроить UI под необработанные данные. Даже прослойку в виде VM в паттерне MVVM для этого придумали.
Ответ написан
Комментировать
wtf_object
@wtf_object
Думаю для konar трудновато будет сразу же использовать MVVM, поэтому можно обойтись codebehind :D
(В моем примере: массив выводится в ричбокс или нужно использовать какой-то другой контрол?)

var arr = new int[] { 1, 2, 3, 4, 5, 6, 7, 8 };
            // Количество столбцов
            var columnsCount = 4;
            // Текущий столбец
            var currentColumn = 0;
            // Перебираем массив
            for (var i = 0; i < arr.Length; i++)
            {
                // Выводим элемент
                rich.AppendText(arr[i] + " ");
                currentColumn++;
                // Если мы не достигли последнего столбца, продолжаем выводить.
                if (currentColumn != columnsCount) continue;
                // Иначе переходим к первому столбцу.
                currentColumn = 0;
                rich.AppendText(Environment.NewLine);
            }
Ответ написан
Комментировать
@i_light
Backend, XAML, crossplatform
Ну, например, так:

int _width = 4;

string formatArray(IEnumerable<int> numbers)
{
   var output = string.Empty;
   var skip = 0;
   while (skip <= numbers.Count)
   {
      output += string.Join(numbers.Skip(skip).Take(_width), " ") + "\n";
      skip += width;
   }
   return output;
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы