wpf textbox textwrapping

时间:2009-05-19 18:26:30

标签: wpf textbox grid textwrapping

我需要一些帮助。不知道这是否可行。我希望得到以下内容:

    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="Auto"/>
            <ColumnDefinition Width="*"/>
        </Grid.ColumnDefinitions>
        <TextBox TextWrapping="Wrap" MinLines ="5"/>
    </Grid>

这是一个包含宽度为*的网格列内部的文本框。我希望文本框占用所有宽度(因此*),但是当用户添加文本时,我希望它在到达行尾时进行换行(可用空间)。

目前上面将给出一个具有整个宽度的文本框,但是当输入文本时,文本框的宽度随着文本的增长而增长。

我知道我可以设置MaxWidth = ?,但是列为*的点是我不知道列的大小是多少。

我想对文本框说“不要长大,无论wpf给你带什么,不要再增加一个像素”。

我认为我想要的是不可能的,因为wpf询问控件想要的大小,当用户添加超出边界的更多文本时,它会请求更多空间并将其宽度扩展到无穷大。

3 个答案:

答案 0 :(得分:9)

尝试将MaxWidth的{​​{1}}属性绑定到已加星标列的TextBox属性(您必须为列命名才能执行此操作)。我很确定我过去做过这样的事情。

类似的东西:

ActualWidth
祝你好运!

答案 1 :(得分:0)

当我在TextBox上设置Grid.Column="1"时,似乎正常工作。

答案 2 :(得分:0)

除了RandomEngy关于Grid.Column="1"所说的内容之外,你可能还需要在Grid本身设置一些对齐属性,特别是如果它设置在具有不同子Stretch行为的另一个容器中(例如StackPanel)。