2011-04-08 3 views
2

Прошу прощения за мой смысл.WPF & ListView - Добавление столбцов и элементов @ Runtime

Я пришел из Windows Forms, поэтому я могу использовать потрясающий комплект управления Fluent Ribbon Control Suite. И я переделываю приложение для кого-то.

В принципе, мне нужно иметь возможность программно создавать новые Column и заполнять их элементами из запроса БД во время выполнения. И в зависимости от того, какая кнопка была нажата, мне также необходимо очистить все элементы в ListView и повторно заполнить ее разными именами столбцов вместе с новыми элементами из другого запроса DB.

Но я с трудом пытаюсь понять это. Я просто не понимаю. Первое, что я сделал, прежде чем искать в Интернете, было это (мышление и надеясь, что это будет очень похоже на то, как Windows Forms делает это):

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

Но я был неправ. То, что я пытался сделать, создало столбец «hi 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? –

+1

Свойство 'ItemsSource'' GridView' ('ItemsControl') является' IEnumerable'. Таким образом, установка его в массив результатов, возвращаемых из запроса, будет выполняться. если у вас есть 'Result [] QueryResult',' ItemsSource = QueryResult' будет делать. – krishnaaditya

3

Один совет ... думать об использовании управления DataGrid (кажется подходящим для вашего требования) Он может автоматически генерировать столбцы для источника элементов. Если вы действительно хотите создавать столбцы самостоятельно, вы можете сделать это, используя 4 типа DataGridColumn, которые могут не нуждаться в установке CellTemplate (этого легко достичь из кода позади). и, конечно, есть тип, в котором вы можете указать CellTemplate

Смежные вопросы