c#listview中的变量listview项

c#listview中的变量listview项,c#,wpf,C#,Wpf,我得到了一个WPF列表视图: <ListView Margin="10,10,0,10" Grid.Row="0" HorizontalContentAlignment="Right" MouseDoubleClick="ListView_MouseDoubleClick" VerticalAlignment="Stretch" Name="listViewConfigItems" MinHeight="300" HorizontalAlignment="Stretch"> //ha

我得到了一个WPF列表视图:

<ListView Margin="10,10,0,10" Grid.Row="0" HorizontalContentAlignment="Right" MouseDoubleClick="ListView_MouseDoubleClick" VerticalAlignment="Stretch" Name="listViewConfigItems" MinHeight="300" HorizontalAlignment="Stretch">
//hard coded columns
</ListView>
这很好,项目被放置在列表中并映射到正确的列。现在我的挑战是不硬编码这些属性,而是能够在XML文件中创建自己的属性。我想这需要MyItem类在某种程度上是动态的

我设法使列自动填充,如下所示(半伪):

但我不知道如何使用类似的方法在ListView上添加项

我正在使用.NET3.5。应用程序无法使用.NET 4或更高版本,但如果需要,我可以安装自定义程序集


谢谢

您可能想使用XmlDataProvider(只需谷歌一下)并设置
AutoGenerateColumns=“true”

我通过在运行时使用反射创建类解决了这个问题,灵感来源于这篇文章:


这样我就可以处理用户提供的变量属性。

谢谢,但数据来自何处并不重要。我需要一种将变量数据添加到listview的方法。我只能通过在Myitem类上创建与标题中的displaymember绑定匹配的属性来让它工作,但是在这种情况下,我不知道绑定和属性将是什么(它是变量),所以我不知道属性的名称。只要阅读它,也许这可以工作。但我的问题是,对象数据不是来自XML文件,而是来自Enterprisemanagement对象。xml文件实际上是一个管理包,因此需要采用特殊的格式。在这里,我只控制希望从应用程序的内部对象中获取哪些属性。这是您的objectList吗?该列表中有什么类型的对象/类?类型为EnterpriseManagement对象(SCOM项目)。问题主要是将变量属性填充到我的ListView中,我发现的唯一方法是向它提供一个类,但是这个类的属性不是动态的。如果我可以这样做:
内部类MyItem{propertyArray[0]{get;set}propertyArray[1]{get;set}…}
或者可以以其他方式馈送listview?谢谢你,塞西莉亚。
 //Populate items to listView
foreach (var obj in objectList)
{
 myWindow.listViewConfigItems.Items.Add(new MyItem
            {
                DisplayName = obj.DisplayName,                   
                Title = obj.Title,
                Description = obj.Description
             });
}

 //....//

 internal class MyItem
    {
        public string DisplayName { get; set; }
        public string Title { get; set; }
        public string Description { get; set; }
    }
 foreach (var conf in GetColumnConfiguration())
{
        {
           GridViewColumn gvc = new GridViewColumn()
            {
                Header = GetHeaderDisplayName(),
                DisplayMemberBinding = new Binding(GetBindingName())


            };
 }