我正在将一些XML从DrawingML转换为XAML。不幸的是,XAML没有像预期的那样使用空格,但我找到了一个解决方法。这是问题所在:
我想在TextBlock中编写以下内容:
嗨约翰,寿司A说的是什么 寿司B?
所以我会写:
<TextBlock>
<Run>Hey</Run>
<Run FontWeight="Bold">John</Run>
<Run>,</Run>
<Run FontStyle="Italic">what did Sushi A say to Sushi B?</Run>
</TextBlock>
这不会产生预期的结果。相反,它产生:
嗨约翰,寿司A说的是什么 寿司B?
请注意“John
”和“,
”之间的空格?很奇怪,是吗?这是因为XAML在运行之间追加一个空格。我不知道为什么会这样。我确实需要完全如上所述的格式,因此更改格式的选项,如使逗号加粗也不是一种选择。
更奇怪的是,有一种解决方法 - 即失去XAML增加的额外空间 - 你必须把你的跑步放在同一条线上。我不知道为什么,但事实就是这样。所以以下实际上工作得很好:
<TextBlock>
<Run>Hey</Run>
<Run FontWeight="Bold">John</Run><Run>,</Run>
<Run FontStyle="Italic">what did Sushi A say to Sushi B?</Run>
</TextBlock>
注意运行#2和#3(4次运行)现在在同一行。
我遇到的问题是我没有找到使用XML Literals编写上述内容的方法。如果我试试这个:
Dim tb = <TextBlock>
<Run>Hey</Run>
<Run FontWeight="Bold">John</Run><Run>,</Run>
<Run FontStyle="Italic">what did Sushi A say to Sushi B?</Run>
</TextBlock>
始终创建如下所示,其中4个分行在单独的行上:
<TextBlock>
<Run>Hey</Run>
<Run FontWeight="Bold">John</Run>
<Run>,</Run>
<Run FontStyle="Italic">what did Sushi A say to Sushi B?</Run>
</TextBlock>
是否有人知道XML的编写方式与XML Literals中编写的完全相同?
如果你正确地回答了这个问题,我会告诉你这个笑话的妙语:)
答案 0 :(得分:2)
我不认为使用span会帮助你(因为它会保留XML格式的非格式化文本,因此它可能不会自动格式化)。
即。
<TextBlock>
<Span>
Hey
<Bold>John</Bold>,
<Italic>what did Sushi A say to Sushi B?</Italic>
</Span>
</TextBlock>
显然这只能修复特定情况而不是一般情况,我可能会建议不要使用XML文字:)
答案 1 :(得分:1)
unicode退格符可以解决你的问题吗?
http://www.fileformat.info/info/unicode/char/0008/index.htm
<强>更新强>
另一个想法。您是否研究过XDocument.Save(TextWriter textWriter, SaveOptions saveOptions)
方法? The documentation表示如果您使用SaveOptions.DisableFormatting
,则会保留间距。