10

我需要帮助。不知道这是否可能。我想要以下内容:

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

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

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

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

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

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

4

3 回答 3

9

MaxWidth尝试将您的属性绑定到已加星标的列TextBoxActualWidth属性(您必须为列命名才能执行此操作)。我很确定我过去做过类似的事情。

就像是:

MaxWidth={Binding ElementName=MyColumn, Path=ActualWidth}

祝你好运!

于 2009-05-19T18:36:56.033 回答
0

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

于 2009-05-19T18:43:02.780 回答
0

除了 RandomEngy 所说的之外Grid.Column="1",您可能还必须在其Grid自身上设置一些对齐属性,特别是如果它设置在另一个具有不同子行为的容器中Stretch(例如 a StackPanel)。

于 2009-05-20T18:37:58.767 回答