2012-07-08 48 views
1

我通過代碼動態創建文本框,並將其添加到LayoutRoot中。我想要文本框支持多行,所以我已將AcceptsReturn屬性設置爲trueTextWrapping屬性爲Wrap。我在另一個問題中看到,要將Height設置爲Auto,我們必須使用double.NaN,並且我已經完成了這項工作。但是,當我添加它時,它的高度是無限的,並且覆蓋整個空間。我只是希望文本框最初是單行的,並且在添加行時讓它增加高度。請幫助我解決這個問題。將文本框的高度設置爲在代碼隱藏時自動創建的文本框

回答

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

有沒有其他的選擇。在我的情況下這很難實現。謝謝你的方式。 – 2012-07-08 17:56:25

+0

謝謝。它的工作,我已經解決了複雜性。 – 2012-07-08 18:15:35

+0

謝謝,我也有解決問題的幫助。 – 2014-02-06 07:03:22

0

一個很好的選擇是創建網格中的一個可調整大小的行,把文本框在那裏。

<RowDefinition MinHeight="20"/> 

把你的文本框在此行中:

Grid.SetRow(textBox,1); 

現在,如果文本框的高度自動或Double.NaN應該適當地調整自身的行。