2010-03-09 17 views
0

是否可以在包含重複元素的當前文檔中以編程方式創建新面板? 例如,當窗口加載我有一個網格(一行)與三個文本字段,Fname01,Lname01和DOB01,我想有一個按鈕,單擊時將添加一個新行到三個新字段的網格( Fname02,Lname02和DOB02)。每次單擊按鈕(addrow)時都會創建一個新行。我也有興趣瞭解這些領域如何在XAML,讓我對數據綁定或編程引用創建的字段的值插入到數據庫等如何以編程方式創建一個帶有控件的xaml面板

謝謝你在前進中確定,

回答

1

你應該使用ListBox(或ListView)或DataGrid。一個正常的網格僅用於佈局,而不是用於管理數據集合。

如果你使用一個列表框,您可以爲您的數據對象,列表框將用來顯示對象一個DataTemplate。在該數據模板,創建3列網格,以保持編輯控件,這些控件綁定到數據對象的屬性。有關DataTemplates和數據綁定的示例和詳細信息,只需在Web上搜索即可。那裏有很多例子。

+0

優秀的建議 - 如果這是他在做什麼那麼它肯定比手工管理網格的更好方法。 – itowlson 2010-03-09 02:32:23

+0

謝謝。這聽起來像他想在這種情況下顯示的數據的集合,但肯定有次當它動態地改變網格的有用。 – 2010-03-09 02:34:47

3

是的。要創建新行,叫Grid.RowDefinitions.Add:

myGrid.RowDefinitions.Add(new RowDefinition { Height = new GridLength(1, GridUnitType.Auto) }); 

然後創建元素在網格中去,新起來,設置行和列的附加屬性,並把它們添加到網格中。 Children集合:

int rowIndex = myGrid.Rows.Count - 1; // or whatever 
TextBox fname = new TextBox(); 
Grid.SetRow(fname, rowIndex); 
Grid.SetColumn(fname, 0); 
myGrid.Children.Add(fname); 

現在,您可以通過編程指通過可變文本框:它

fname.Text = "I'm a text box"; 

或設置綁定:

fname.SetBinding(TextProperty, new Binding { Source = mySource, Path = new PropertyPath("FirstName") }); 

編輯:作爲本尼說,在他的回答,如果你想顯示的數據的集合,然後一個ItemsControl絕對是一個更好的方式去比編程添加到佈局網格。我會離開這個答案,不過,因爲它仍然可能與非項目列表場景。

相關問題