Подтвердить что ты не робот

Добавление элементов в столбцы в WPF ListView

Я уже некоторое время пытаюсь добавить элементы в 2 столбца в ListView. В моем приложении Windows Forms у меня было что-то вроде этого:

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

Я бы назвал этот класс из моего Form.cs.

Как это сделать в WPF? Предпочтительно, я бы не хотел использовать много XAML.

4b9b3361

Ответ 1

Решение с меньшим количеством XAML и более С#

Если вы определяете ListView в XAML:

<ListView x:Name="listView"/>

Затем вы можете добавить столбцы и заполнить его в С#:

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

См. определение MyItem ниже.

Решение с большим количеством XAML и менее С#

Однако легче определить столбцы в XAML (внутри определения ListView):

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

А затем просто заполните список в С#:

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

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

См. определение MyItem ниже.

MyItem Определение

MyItem определяется следующим образом:

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

    public string Name { get; set; }
}