+1  A: 

Any chance the unicode backspace character would solve your problem?

http://www.fileformat.info/info/unicode/char/0008/index.htm

Update

One other idea. Have you looked into the XDocument.Save(TextWriter textWriter, SaveOptions saveOptions) method? The documentation says that if you use SaveOptions.DisableFormatting, it will preserve spacing.

DanM
I've tried this and it doesn't appear to have any effect as the backspace character just simply shows as a plain text.
Otaku
@Otaku, I updated my post with another suggestion.
DanM
Thanks Dan. I tried this and it kind of works. The main issue is how XAML is read by WPF/SL - it doesn't preserve spacing despite the Linq documentation. So in the case of this and tyranid's suggestion of leaving whitespaces within tags, like <Run> , <Run>, XAML will still not display those whitespaces. I may be able to get around that using something more like <Run Text=" , "/>. I'll let this thread fester for a day or two to see if some other ideas come in that are different than file format saves. That may be the only option though I realize.
Otaku
+2  A: 

I don't suppose using a span will help you (as it will keep non-formatted text out of XML elements so it might not get auto-formatted).

i.e.

<TextBlock>
    <Span>                
        Hey
        <Bold>John</Bold>, 
        <Italic>what did Sushi A say to Sushi B?</Italic>
    </Span>            
</TextBlock>

Obviously this only fixes the specific case not the general, I would probably suggest not using XML literals :)

tyranid
thanks, this does indeed work for the exact scenario. however, i do need to use runs for some of the properties they hold (like Foreground and Fontsize. +1 for a good suggestion though.On not using XML Literals, I'd also be happy with just plain ol' Linq-to-XML (Dim tb as New XElement("TextBlock", content), etc.) if there is a way to do that in place of literals.
Otaku
How exactly are you passing the XElement into XAML? If you are just passing it to XElement::ToString then there _is_ an option to disable output formatting. Do `tb.ToString(SaveOptions.DisableFormatting)` You will need to ensure any white space you actually want is in the runs (i.e. <run>, </run>)Which is pretty much the same as below :)
tyranid
Yeah, I was testing this per Dan's suggestion. It kind of works.
Otaku