1

我正在通过代码动态创建一个文本框,并将其添加到 LayoutRoot。我希望文本框支持多行,所以我将AcceptsReturn属性设置为trueTextWrapping属性Wrap。我在另一个问题中读到要设置Heightas Auto,我们必须使用double.NaN,我已经这样做了。但是,当我添加它时,它的高度是无限的,并且覆盖了整个空间。我只希望文本框最初是单行的,并在添加行时让它增加高度。请帮我解决这个问题。

4

2 回答 2

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);
}
于 2012-07-08T17:47:52.653 回答
0

一个不错的选择是在网格中创建一个可调整大小的行并将 textBox 放在那里。

<RowDefinition MinHeight="20"/>

将您的 TextBox 放在这一行:

Grid.SetRow(textBox,1);

现在,如果 textBox 的高度是 Auto 或 Double.NaN,它应该适当地调整自身和行的大小。

于 2012-07-08T18:33:58.353 回答