我需要一些帮助。不知道这是否可行。我希望得到以下内容:
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBox TextWrapping="Wrap" MinLines ="5"/>
</Grid>
这是一个包含宽度为*的网格列内部的文本框。我希望文本框占用所有宽度(因此*),但是当用户添加文本时,我希望它在到达行尾时进行换行(可用空间)。
目前上面将给出一个具有整个宽度的文本框,但是当输入文本时,文本框的宽度随着文本的增长而增长。
我知道我可以设置MaxWidth = ?,但是列为*的点是我不知道列的大小是多少。
我想对文本框说“不要长大,无论wpf给你带什么,不要再增加一个像素”。
我认为我想要的是不可能的,因为wpf询问控件想要的大小,当用户添加超出边界的更多文本时,它会请求更多空间并将其宽度扩展到无穷大。
答案 0 :(得分:9)
尝试将MaxWidth
的{{1}}属性绑定到已加星标列的TextBox
属性(您必须为列命名才能执行此操作)。我很确定我过去做过这样的事情。
类似的东西:
ActualWidth
祝你好运!
答案 1 :(得分:0)
当我在TextBox上设置Grid.Column="1"
时,似乎正常工作。
答案 2 :(得分:0)
除了RandomEngy关于Grid.Column="1"
所说的内容之外,你可能还需要在Grid
本身设置一些对齐属性,特别是如果它设置在具有不同子Stretch
行为的另一个容器中(例如StackPanel
)。