Definire una colonna Button all'interno di una ListView in WPF

Rate this Content 0 Votes

Autore: Matteo Baglini

Supponiamo di avere una classe Person e una collezione di essa impostata come DataContext di una Window.

public class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
}
public partial class Window1 : Window
{
    public Window1()
    {
        InitializeComponent();
        DataContext = GetPeople();
    }

    private ObservableCollection GetPeople()
    {
        var people = new ObservableCollection();

        for (int i = 0; i < 5; i++)
            people.Add(new Person { Name = "Name" + i, Age = i });

        return people;
    }
}

In WPF per inserire in una ListView una colonna contenente un Button dobbiamo modificare il Template dell cella tramite un DataTemplate.

<ListView ItemsSource="{Binding}">
    <ListView.View>
        <GridView>
            <GridViewColumn>
                <GridViewColumn.CellTemplate>
                    <DataTemplate>
                        <Button Content="Delete" />
                    </DataTemplate>
                </GridViewColumn.CellTemplate>
            </GridViewColumn>
            <GridViewColumn Header="Name"
                            Width="100"
                            DisplayMemberBinding="{Binding Path=Name}" />
            <GridViewColumn Header="Age"
                            Width="100"
                            DisplayMemberBinding="{Binding Path=Age}" />
        </GridView>
    </ListView.View>
</ListView>

Il risultato sarà quello mostrato nella seguente figura.