2015-04-06 70 views
-3

問題在哪裏? 我想動態地添加一個新的文本框到網格。 (Silverlight)Button Click事件將TextBox添加到Grid

private void Button_Click(object sender, RoutedEventArgs e) 
    { 
     TextBox o = new TextBox(); 
     o.SetValue(Canvas.TopProperty, 160); // margin top, I hope. 
     o.SetValue(Canvas.LeftProperty, 40); // margin left, I hope. 
     o.Height = 31; 
     o.Width = 140; 
     o.HorizontalAlignment= HorizontalAlignment.Left; 
     o.TextWrapping = TextWrapping.Wrap; 
     o.VerticalAlignment = VerticalAlignment.Top; 
     LayoutRoot.Children.Add(o); 
    } 

非常感謝。 問候,Daniele。

+0

我建議,總是以添加文本框只是使它不可見的默認和按鈕點擊使其可見! – mybirthname

+0

謝謝。我知道,但目前這不是一個好的解決方案..因爲它取決於我的應用程序的用戶他真正需要多少文本框。例如,如果有人需要15個文本框?因此隱藏(摺疊)的文本框不是最好的解決方案。 –

+0

你有做過什麼研究嗎? http://www.c-sharpcorner.com/uploadfile/kirtan007/add-controls-dynamically-to-silverlight-page/ –

回答

0

我覺得LayoutRoot是在XAML網格:

<Grid Name="LayoutRoot"> 

在這種情況下,你應該刪除的Canvas.TopCanvas.Left分配並設置TextBoxMargin

TextBox o = new TextBox(); 
o.Margin = new Thickness(40, 160, 0, 0); 
//... 

Canvas. - 屬性僅在Canvas容器中有效。你應該用相應的方法在隱藏代碼來設置附加屬性:

Canvas.SetTop(o, 160); 
+0

謝謝,解決了我的問題。 :) –