WPF & ListView - Добавление столбцов и элементов @ Runtime - PullRequest
2 голосов
/ 09 апреля 2011

Прошу прощения за мою нелюбовь.

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

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

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

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

Но я был не прав. Я попытался создать колонку под названием «Привет, Баэлтазор!». и добавьте его в ListView. Как мы можем заполнить ListView элементами и столбцами во время выполнения?

Единственные решения, которые я видел, включали много XAML, и я не понимаю, как это работает, потому что я не могу изменить XAML во время выполнения?

Ответы [ 2 ]

4 голосов
/ 09 апреля 2011
<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);
3 голосов
/ 09 апреля 2011

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

...