Ajouter des éléments dans les colonnes D'une liste WPF

j'ai lutté pendant un certain temps maintenant pour ajouter des éléments à 2 colonnes dans un ListView. Dans mon application Windows Forms, j'avais quelque chose comme ceci:

// 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);
}

j'appellerais alors cette classe de mon Form.cs.

Comment puis-je faire cela dans WPF? De préférence, Je ne voudrais pas utiliser beaucoup de XAML.

29
demandé sur davidwroxy 2013-04-07 22:01:49

1 réponses

Solution avec moins de XAML et plus de C#

si vous définissez le ListView in XAML:

<ListView x:Name="listView"/>

alors vous pouvez ajouter des colonnes et les remplir en 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" });
}

Voir la définition de MyItem ci-dessous.

Solution avec plus de XAML et moins de C#

cependant, il est plus facile de définir les colonnes dans XAML (à l'intérieur du ListView définition):

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

Et puis il suffit de remplir la liste de C#:

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

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

Voir la définition de MyItem ci-dessous.

MyItem Définition

MyItem est défini comme ceci:

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

    public string Name { get; set; }
}
81
répondu Phil 2016-02-13 17:08:50