代码之家  ›  专栏  ›  技术社区  ›  Kelly

WPF中的richtextbox未正确调整内容大小

  •  2
  • Kelly  · 技术社区  · 16 年前

    我需要在 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 回复  |  直到 14 年前
        1
  •  3
  •   Simeon Pilgrim    16 年前

    如果不需要 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>