为什么我在Wpf中获得System.Collections.Generic.List`1[VoltageStabilizer.EnterParams+Invoice]而不是列表的内容

8e2ybdfx  于 2023-10-22  发布在  其他
关注(0)|答案(1)|浏览(111)

我决定做一个关于稳压器的小项目。我尝试在WPF中将数据从ComboBox插入DataGrid。
创建Invoice类:

public class Invoice
        {
            public string Number { get; set; }
            public string Item { get; set; }
            public string Power { get; set; }
            public string Quantity { get; set; }

        }

我使用一个List来插入信息到DataGrid中。

List<Invoice> ItemCollection = new List<Invoice>()
            {
                new Invoice() {Number = num, Item = equipment.Text, Power = power.Text, Quantity = quantity.Text}
            };
                DataGrid.Items.Add(ItemCollection);

但是如果我在DataGrid中打印设备,功率和数量ComboBoxex数据,我会得到错误的结果:

System.Collections.Generic.List`1[VoltageStablizer.EnterParams+Invoice]
eyh26e7m

eyh26e7m1#

DataGrid.Items中的项目类型是DataGridItem,这意味着您不能直接添加另一个具有不同类型的集合。
另一方面,将IEnumerable(在本例中为ItemCollection)赋给DataGrid.ItemsSource会自动生成DataGrid的列。
当添加新项目到列表中时,您可以将其添加到ItemCollection。在容器中为ItemCollection创建一个属性,以便在代码的不同部分使用。

// When initializing your container
ItemCollection = new List<Invoice>(); 
DataGrid.ItemsSource = ItemCollection;

// When add button clicked
ItemCollection.Add(new Invoice() {Number = num, Item = equipment.Text, Power = power.Text, Quantity = quantity.Text});

相关问题