C# 将动态创建的文本框的“代码隐藏”中的文本框高度设置为“自动”

C# 将动态创建的文本框的“代码隐藏”中的文本框高度设置为“自动”,c#,silverlight,windows-phone-7,xaml,C#,Silverlight,Windows Phone 7,Xaml,我通过代码动态创建一个文本框,并将其添加到LayoutRoot。我希望文本框支持多行,因此我将AcceptsReturn属性设置为true,将TextWrapping属性设置为Wrap。我在另一个问题中读到,要将高度设置为自动,我们必须使用double.NaN,我已经这样做了。但是,当我加上它时,它的高度是无限的,并且覆盖了整个空间。我只是希望文本框最初是一行,并让它在添加行时增加高度。请帮我解决这个问题 将文本框包装在堆叠面板中。如果您是通过代码执行的,您可以执行以下操作,例如: public

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

文本框
包装在
堆叠面板
中。如果您是通过代码执行的,您可以执行以下操作,例如:

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);
}

文本框
包装在
堆叠面板
中。如果您是通过代码执行的,您可以执行以下操作,例如:

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);
}

一个好的替代方法是在网格中创建一个可调整大小的行,并将文本框放在其中

<RowDefinition MinHeight="20"/>

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

一个好的替代方法是在网格中创建一个可调整大小的行,并将文本框放在其中

<RowDefinition MinHeight="20"/>

现在,如果文本框的高度为Auto或Double.NaN,则应适当调整其自身和行的大小。

是否有其他选择。这在我的场景中很难实现。顺便说一句,谢谢。我也得到了解决这个问题的帮助。还有其他选择吗。这在我的场景中很难实现。顺便说一下,谢谢。我也得到了解决问题的帮助。