Я нашел решение.
Элемент TableCell может содержать элемент ColSpan, в котором можно указать количество ячеек, которые должны быть объединены с этой ячейкой. Другой интересный вопрос: как использовать это наилучшим образом? Мой текущий подход заключается в следующем.
1. Определите все виды строк в сетке относительно слияния ячеек в них (в моем примере есть 2 вида - простая строка без слияния и строка «группа» с одной ячейкой, которая объединяет все ячейки).
2. Определите элемент TableRow для каждого вида строки, используя элемент ColSpan для объединения ячеек. При использовании элемента TextBox в ячейках не забудьте установить уникальные имена для всех элементов TextBox в отчете.
3. Установите видимость для каждого типа строки. Я пока не могу найти лучшего способа, чем простое перечисление индексов строк, например:
<Visibility>
<Hidden>=iif(RowNumber(Nothing) = 1 or RowNumber(Nothing) = 5 or RowNumber(Nothing) = 8, true, false)</Hidden>
</Visibility>
Убедитесь, что каждая строка в сетке соответствует условию "Hidden = false" не более чем из одного элемента TableRow.
Замечания и предложения приветствуются.