2009-10-21 3 views
3

У меня очень простой файл xaml, где я передаю те же элементы Paragraph и Run как RichTextBox, так и FlowDocumentScrollViewer. Оба выглядят радикально по-другому - чего я не ожидал.RichTextBox vs FlowDocumentScrollViewer - Почему они выглядят так иначе?

Я понимаю, что вы можете создать или FlowDocument или контейнеры, чтобы они выглядели одинаково, но я ожидал, что они оба наследуют те же настройки по умолчанию.

Вот мой код:

<Grid> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="80" /> 
     <RowDefinition Height="80" /> 
     <RowDefinition Height="80" /> 
    </Grid.RowDefinitions> 
    <RichTextBox Grid.Row="0"> 
     <FlowDocument> 
      <Paragraph> 
       <Run>Here is some text</Run> 
       <LineBreak /> 
       <Run>Here is some more text</Run> 
      </Paragraph> 
     </FlowDocument> 
    </RichTextBox> 
    <TextBlock Grid.Row="1" Padding="6,0,0,0"> 
     <Run>Here is some text</Run> 
     <LineBreak /> 
     <Run>Here is some more text</Run> 
    </TextBlock> 
    <FlowDocumentScrollViewer Grid.Row="2" IsHitTestVisible="True" VerticalScrollBarVisibility="Hidden"> 
     <FlowDocument> 
      <Paragraph> 
       <Run>Here is some text</Run> 
       <LineBreak /> 
       <Run>Here is some more text</Run> 
      </Paragraph> 
     </FlowDocument> 
    </FlowDocumentScrollViewer> 
</Grid> 

Мой вопрос

Есть ли какой-нибудь способ обеспечения того, чтобы как RichTextBox и FlowDocumentScrollViewer отображения FlowDocument таким же образом? В идеале, вы не можете отличить их между собой - без полей «жесткого кода», шрифтов и т. Д. В том или ином.

В моем примере выше мой Textblock требует некоторого Margin, чтобы он отображался так же, как RichTextBlock, но я действительно хочу избежать необходимости делать что-либо подобное, поскольку, несомненно, будет ситуация, когда некоторые шрифт или настройка культуры нарушает все это ужасно.

ответ

2

Я не эксперт в WPF, тем более, что я действительно использую RichTextBox, но привязывая свойства одного к другому со стилями (возможно, даже шаблонами), может решить вашу проблему.

Свойства FlowDocument по умолчанию отличаются от свойств RTB или TB. (Стандартный шрифт для FlowDocument, являющийся Джорджией !!!)

<RichTextBox> 
     <FlowDocument Name="rtDoc" 
         PagePadding="{Binding PagePadding, ElementName=flDoc}" 
         ... 
         FontFamily="{Binding FontFamily, ElementName=flDoc}"> 
      ... 
     </FlowDocument> 
    </RichTextBox> 
     ... 
    <FlowDocumentScrollViewer> 
     <FlowDocument Name="flDoc" /> 
    </FlowDocumentScrollViewer> 

Надеюсь, вы сможете это использовать!

Смежные вопросы