我正在将一些 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 编写?
奖金
如果您正确回答问题,我会告诉您笑话的妙语:)