0

考虑这个 Xaml:

<RichTextBox>
<Document>
   <Paragraph> 
       <Run Text="FirstWord " />
       <Run Text="SecondWord"/>
   </Paragraph >
   <Paragraph>  
       <Run Text="FirstWord " />
       <Run Text="SecondWord"/>
   </Paragraph >
 </Document>
</RichTextBox >

现在,假设由于某些原因我使用这样的东西:

<StackPanel Orientation = "Vertical">
   <StackPanel Orientation = "Horizontal">  // as a Paragraph
       <TextBlock Text="FirstWord " />
       <TextBlock Text="SecondWord"/>
   </StackPanel>
   <StackPanel Orientation = "Horizontal">  // another Paragraph
       <TextBlock Text="FirstWord " />
       <TextBlock Text="SecondWord"/>
   </StackPanel>
</StackPanel>

RunParagraph或其他TextElement不是控件,因此它们没有ArrangeOverride或方法MesureOverride。我的问题是为什么它们不是控件?是因为性能问题还是测量尺寸、排列和渲染 aTextElement和 a之间没有太大区别Control?换句话说,第一个 Xaml 比第二个 Xaml 有什么好处(除了它的外观)?

谢谢。

4

1 回答 1

0

它们不是控件,因为它们与文档的其余部分没有分开。您在文档中设置的不是子控件,而是文档的内容。渲染完全在 RichTextBox 内完成。

第一个示例和第二个示例之间的主要区别在于 RichTextBox 允许您创建具有不同格式的部分文本的流动文本。虽然可以通过使用普通的 TextBlocks 来做到这一点,但很难对换行符和动态调整大小等内容进行微调。

于 2013-01-06T07:23:26.097 回答