2009-12-02 2 views
2

Мне нужно отобразить текст с цветами и форматированием в List. Я использую ListBox с RichTextControl для отображения данных. Мне также нужно, чтобы содержимое отображалось в окне, но текст не нужно обертывать.RichTextBox в WPF неправильно изменяет размер содержимого

Когда я делаю этот простой пример, текст отображается вертикально и не изменяется, когда я изменяю размер окна. Если я установил WidthRichTextBox на фиксированный размер, равный 100, тогда он будет работать.

Любые идеи?

<Window x:Class="WpfApplication19.Window1" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Title="Window1" Height="300" Width="300"> 
    <Grid> 
     <ListBox HorizontalContentAlignment="Stretch"> 
      <ListBox.Items> 
       <RichTextBox> 
        <FlowDocument> 
         <Paragraph> 
          <Run>this is a test</Run> 
         </Paragraph> 
        </FlowDocument> 
       </RichTextBox> 
      </ListBox.Items>     
     </ListBox> 
    </Grid> 
</Window> 

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

+0

нужна ли вам ListBox, так что вы можете иметь выбор и т.д., или вы используете только для хранения элементов ReichTextBox? –

ответ

3

Если вам не нужно поведение выбора списка из ListBox, затем с помощью ItemsControl обеспечивает правильное расположение:

<Grid> 
    <ItemsControl> 
     <RichTextBox> 
      <FlowDocument> 
       <Paragraph > 
        <Run>this is a test</Run> 
       </Paragraph> 
      </FlowDocument> 
     </RichTextBox> 
    </ItemsControl> 
</Grid> 

но, чтобы получить то, что вы просили, обернуть RichTextBox в Grid и затем Bind чтобы это ActualWidth

<Grid> 
    <ListBox HorizontalContentAlignment="Stretch"> 
     <ListBox.Items> 
      <Grid> 
       <RichTextBox Width="{Binding Path=ActualWidth, RelativeSource={RelativeSource AncestorType=Grid}}" > 
        <FlowDocument> 
         <Paragraph> 
          <Run>this is a test</Run> 
         </Paragraph> 
        </FlowDocument> 
       </RichTextBox> 
      </Grid> 
     </ListBox.Items> 
    </ListBox> 
</Grid> 
+0

Любая идея, почему вам нужно установить ширину в RichTextBox, когда она находится внутри элемента списка? –

+0

Я не уверен, что взаимодействие ListBox с RichTextBox вызывает эту проблему/требование. –

+0

Вы также можете использовать ScrollViewer с StackPanel в нем, а затем просто управлять дочерними элементами. Это то, что я закончил, но я предпочитаю решение ItemsControl, которое вы разместили здесь. – Kelly

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