自分がやるとしたらViewModelにはOservableCollection<FormattedTextSrc>みたいなのがあってFormattedTextSrcはSpanなどにほぼ一対一対応することができるただのデータ。
たとえばList<Tuple<int,string>>などをプロパティで持っててintはその文字列をどのように扱うかがわかるもの。intはもちろんenumか何かにすべき。

でUI側のResViewなりがOnBindingContextだっけ?バインディングした時に上がるメソッドでそのListからFormattedTextを組み立てる