Xaml 完全按照编写XML文本的方式编写XML

Xaml 完全按照编写XML文本的方式编写XML,xaml,linq-to-xml,whitespace,xml-literals,Xaml,Linq To Xml,Whitespace,Xml Literals,我正在将一些XML从DrawingML转换为XAML。不幸的是,XAML不能像预期的那样在空白处工作,但我已经找到了一种解决方法。问题是: 问题陈述 我想在文本块中写入以下内容: 嗨,约翰,寿司A对他说了什么 寿司B 所以我会写: <TextBlock> <Run>Hey</Run> <Run FontWeight="Bold">John</Run> <Run>,</Run> <Run FontSt

我正在将一些XML从DrawingML转换为XAML。不幸的是,XAML不能像预期的那样在空白处工作,但我已经找到了一种解决方法。问题是:

问题陈述 我想在文本块中写入以下内容:

嗨,约翰,寿司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>
请注意,第2次和第3次跑步(共4次)现在在同一条线上

问题: 我遇到的问题是,我还没有找到一种使用XML文本编写上述内容的方法。如果我尝试这样做:

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>
Dim tb=
嘿
厕所,
寿司A对寿司B说了什么?
它始终按以下方式创建,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>

嘿
约翰
,
寿司A对寿司B说了什么?
有人知道如何准确地编写XML吗?

奖金
如果你回答正确,我会告诉你笑话的要点:)

unicode退格字符有没有可能解决你的问题

更新


还有一个想法。您是否研究过
XDocument.Save(TextWriter、TextWriter、SaveOptions和SaveOptions)
方法?说明如果您使用
SaveOptions.DisableFormatting
,它将保留间距。

unicode退格字符有可能解决您的问题吗

更新


还有一个想法。您是否研究过
XDocument.Save(TextWriter、TextWriter、SaveOptions和SaveOptions)
方法?说明如果您使用
SaveOptions.DisableFormatting
,它将保留间距。

我认为使用span不会有帮助(因为它会将未格式化的文本保留在XML元素之外,因此可能不会自动格式化)

i、 e


嘿
厕所,
寿司A对寿司B说了什么?

显然,这只解决了特定情况而不是一般情况,我可能会建议不要使用XML文本:)

我认为使用span不会对您有所帮助(因为它会将非格式化文本保留在XML元素之外,因此可能不会自动格式化)

i、 e


嘿
厕所,
寿司A对寿司B说了什么?

显然,这只修复了特定情况而不是一般情况,我可能会建议不要使用XML文本:)

谢谢,这确实适用于确切的场景。但是,我确实需要对它们所拥有的一些属性使用运行(比如前台和Fontsize.+1,这是一个很好的建议。如果不使用XML文本,我也很乐意使用普通的OLLINQ到XML(将tb作为新的XElement(“TextBlock”,content)等)如果有一种方法可以替代文字。您如何将XElement传递到XAML中?如果您只是将其传递给XElement::ToString,则有一个选项可以禁用输出格式。do
tb.ToString(SaveOptions.DisableFormatting)
您需要确保运行中存在您实际需要的任何空白(即)这与下面的内容基本相同:)是的,我根据丹的建议测试了这个。这是可行的。谢谢,这确实适用于确切的场景。但是,我确实需要对它们所拥有的一些属性使用运行(比如前台和Fontsize.+1,这是一个很好的建议。如果不使用XML文本,我也很乐意使用普通的OLLINQ到XML(将tb作为新的XElement(“TextBlock”,content)等)如果有一种方法可以替代文字。您如何将XElement传递到XAML中?如果您只是将其传递给XElement::ToString,则有一个选项可以禁用输出格式。do
tb.ToString(SaveOptions.DisableFormatting)
您需要确保运行中存在您实际需要的任何空白(即)这与下面的内容基本相同:)是的,我根据丹的建议测试了这个。我试过了,它似乎没有任何效果,因为退格字符只是简单地显示为纯文本。谢谢Dan。我试过这个,效果不错。主要问题是WPF/SL如何读取XAML——尽管有Linq文档,但它并没有保留间距。因此,在这种情况下,泰兰德建议在标记中保留空白,比如,XAML仍然不会显示这些空白。我可以用类似的东西来解决这个问题。我会让这个线程溃烂一两天,看看是否有其他想法与文件格式保存不同。虽然我意识到这可能是唯一的选择。我已经尝试过了,但它似乎没有任何效果,因为退格字符只是简单地显示为纯文本。谢谢Dan。我试过这个,效果不错。主要问题是WPF/SL如何读取XAML——尽管有Linq文档,但它并没有保留间距。因此,在这种情况下,泰兰德建议在标记中保留空白,比如,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>
<TextBlock>
    <Span>                
        Hey
        <Bold>John</Bold>, 
        <Italic>what did Sushi A say to Sushi B?</Italic>
    </Span>            
</TextBlock>