2011-04-08 39 views
2

請原諒我的不高興。WPF&ListView - 在運行時添加列和項目

我從Windows窗體過來,所以我可以用流利的真棒絲帶控制套件。我正在爲某人重做一個應用程序。

基本上,我需要能夠以編程方式創建新Column S和在運行時從數據庫查詢項目進行填充。根據點擊哪個按鈕,我還需要清除ListView中的所有項目,並使用不同的列名稱以及來自另一個數據庫查詢的新項目重新填充它。

但我有一個很難試圖弄清楚這一點。我只是不明白。我做的第一件事,網上通緝之前,是這樣的(想法,希望這將是非常類似於Windows窗體是怎麼做的):

GridViewColumn gvc = new GridViewColumn(); 
      gvc.Header = "hi baeltazor!"; 
      listView1.Items.Add(gvc); 

可是,我錯了。我試圖做的是創建一個名爲「嗨baeltazor!」的專欄。並將其添加到ListView。我們如何在運行時用項目和列填充ListView?

我見過的唯一的解決辦法有很多的XAML參與,我沒有得到如何工作的,因爲我不能在運行時更改XAML?

回答

4
<ListView x:Name="ListViewControl"> 
    <ListView.View> 
     <GridView x:Name="GridViewControl"/> 
    </ListView.View> 
</ListView> 

,並在後面的代碼,

ListViewControl.ItemsSource = ItemsSourceObject; //your query result 
GridViewColumn column = new GridViewColumn(); 
column.Header = "Name"; 
column.DisplayMemberBinding = new Binding("Name"); 
GridViewControl.Columns.Add(column); 
+0

感謝您給我們一個很有型!與:'ItemsSource = ItemsSourceObject',我只是將從查詢返回的結果數組傳遞給ItemSourceObject? – 2011-04-08 23:57:09

+1

''GridView'(ItemsControl')的ItemsSource屬性是'IEnumerable'。因此,將其設置爲從查詢返回的結果數組將會執行。如果你有'Result [] QueryResult','ItemsSource = QueryResult'就可以。 – krishnaaditya 2011-04-09 00:15:44

3

一個建議...考慮使用DataGrid控件(你的要求似乎APT) 它可以自動生成的項目源列。 如果你真的想在自己創建的列...你可以做到這一點,通過使用4種類型的DataGridColumn S的可能並不需要CellTemplate進行設置(這是很容易從代碼實現之後)。當然也可以在其中指定CellTemplate