RichTextBox в WPF неправильно изменяет размер содержимого - PullRequest
2 голосов
/ 02 декабря 2009

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

Когда я делаю этот простой пример, текст отображается вертикально и не изменяется при изменении размера окна. Если я установлю Width из RichTextBox на фиксированный размер, например, 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>

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

1 Ответ

3 голосов
/ 03 декабря 2009

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

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

Но чтобы получить то, о чем вы просили, оберните RichTextBox в Grid и затем привяжите к нему 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>
...