为什么 ListView 不显示 WPF 上的项目?

Mik*_*ish 1 c# wpf binding

我试图在 WPF APP 上显示列表视图值,但我只能显示标题,下面是非常简单的代码:

 public class Ticket 
    {
        public string Descrption { get; set; }
        public string Status { get; set; }
        public Ticket()
        {    
        }           
    }
Run Code Online (Sandbox Code Playgroud)

XAML:

 <ListView ItemsSource="{Binding AllTasks}" Margin="34,30,69,65">
            <ListView.View>
                <GridView>
                    <GridViewColumn DisplayMemberBinding="{Binding Descrption}" Header="Ticket" Width="150"></GridViewColumn>
                    <GridViewColumn DisplayMemberBinding="{Binding Status}" Header="Status" Width="50"></GridViewColumn>
                </GridView>
            </ListView.View>
        </ListView>



public partial class MainWindow : Window
    {
        List<Ticket> AllTasks { get; set; }
        public MainWindow() 
        {
            InitializeComponent();

            AllTasks = new List<Ticket>();           

            Ticket ticket2 = new Ticket();
            ticket2.Descrption = "test";
            ticket2.Status = "To Do";
            AllTasks.Add(ticket2);

            Ticket ticket3 = new Ticket();
            ticket3.Descrption = "New Ticket";
            ticket3.Status = "In Progress";

            AllTasks.Add(ticket3);

            DataContext = this;
        }
    }
Run Code Online (Sandbox Code Playgroud)

用户界面如下图所示:

在此处输入图片说明

Cle*_*ens 5

WPF 数据绑定仅适用于公共属性:

public List<Ticket> AllTasks { get; set; }
Run Code Online (Sandbox Code Playgroud)

该属性也应该是只读的(或触发属性更改通知):

public List<Ticket> AllTasks { get; } = new List<Ticket>();
Run Code Online (Sandbox Code Playgroud)

如果您想在设置视图的 DataContext 后添加或删除元素,请使用 ObservableCollection:

public ObservableCollection<Ticket> AllTasks { get; }
    = new ObservableCollection<Ticket>();
Run Code Online (Sandbox Code Playgroud)