Это действительно похоже на ошибку.Я запустил ваш проект repro и проверил стек вызовов при возникновении исключения.Это происходит в DataGridCell.RemoveBindingExpressions во время вызова VisualTreeHelper.IsAncestorOf.Последний метод вызывает исключение, когда ему передается объект, который не является Visual или Visual3D.Но DataGridCell передает его любому элементу, являющемуся целью привязки.В вашем случае это Run, который не является производным от Visual.
Я подумал, что вы можете обойти его, используя IValueConverter для создания FlowDocument и привязки RichTextBox.Document, чтобыприменяется к RichTextBox.Но поскольку Document не является свойством зависимости, он не может быть целью привязки.
Поэтому вместо этого вы можете создать UserControl, в котором размещается элемент управления RichTextBox:
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Local:HomeworkControl Text="{Binding Homework}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
Затем в этом пользовательском элементе управления вы позаботитесь о создании RichTextBox, документа, запуска и т. Д. К сожалению, я думаю, что это всего лишь ограничение (или ошибка) в элементе управления DataGrid.