我正在通过代码动态创建文本框,并将其添加到LayoutRoot。我希望文本框支持多行,因此我将AcceptsReturn
属性设置为true
,将TextWrapping
属性设置为Wrap
。我在另一个问题中读到要将Height
设置为Auto
,我们必须使用double.NaN
,我已经这样做了。但是,当我添加它时,它的高度是无限的,并且覆盖了整个空间。我只是希望文本框最初是单行,并让它在添加行时增加高度。请帮我解决这个问题。
答案 0 :(得分:4)
将TextBox
换成StackPanel
。如果你是通过代码来做的,你可以做这样的事情,例如:
public MainPage()
{
InitializeComponent();
var textBox = new TextBox
{
AcceptsReturn = true,
Height = Double.NaN,
TextWrapping = TextWrapping.Wrap
};
var stackPanel = new StackPanel();
stackPanel.Children.Add(textBox);
this.LayoutRoot.Children.Add(stackPanel);
}
答案 1 :(得分:0)
一个很好的选择是在网格中创建一个可调整大小的行并将textBox放在那里。
<RowDefinition MinHeight="20"/>
将TextBox放在此行中:
Grid.SetRow(textBox,1);
现在,如果textBox的高度为Auto或Double.NaN,则应适当调整自身和行的大小。