Adicionar itens a colunas numa lista WPF

eu tenho lutado por um tempo agora para adicionar itens a 2 colunas em um ListView. Na minha aplicação de formulários do Windows eu tinha uma coisa assim:

// In my class library:
public void AddItems(ListView listView)
{
    var item = new ListViewItem {Text = "Some Text for Column 1"};
    item.SubItems.Add("Some Text for Column 2");

    listView.Items.Add(item);
}
Eu ligaria para esta turma do meu ...

Como posso fazer isto na WPF? De preferência, não gostaria de usar muito XAML.

Author: davidwroxy, 2013-04-07

1 answers

Solução com menos XAML e mais C#

Se definir o ListView em XAML:

<ListView x:Name="listView"/>

Depois podes adicionar colunas e povoá-las em C#:

public Window()
{
    // Initialize
    this.InitializeComponent();

    // Add columns
    var gridView = new GridView();
    this.listView.View = gridView;
    gridView.Columns.Add(new GridViewColumn { 
        Header = "Id", DisplayMemberBinding = new Binding("Id") });
    gridView.Columns.Add(new GridViewColumn { 
        Header = "Name", DisplayMemberBinding = new Binding("Name") });

    // Populate list
    this.listView.Items.Add(new MyItem { Id = 1, Name = "David" });
}

Ver definição de MyItem abaixo.

Solução com mais XAML e menos C#

No entanto, é mais fácil definir as colunas em XAML (dentro da definição ListView):

<ListView x:Name="listView">
    <ListView.View>
        <GridView>
            <GridViewColumn Header="Id" DisplayMemberBinding="{Binding Id}"/>
            <GridViewColumn Header="Name" DisplayMemberBinding="{Binding Name}"/>
        </GridView>
    </ListView.View>
</ListView>

E depois apenas povoar a lista em C#:

public Window()
{
    // Initialize
    this.InitializeComponent();

    // Populate list
    this.listView.Items.Add(new MyItem { Id = 1, Name = "David" });
}

Ver definição de MyItem abaixo.

MyItem Definição

MyItem é definido desta forma:

public class MyItem
{
    public int Id { get; set; }

    public string Name { get; set; }
}
 81
Author: Phil, 2016-02-13 17:08:50