繁体   English   中英

ListView中的C#变量ListView项目

[英]c# variable listview items in a ListView

我有一个WPF ListView:

<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配置文件读取)

我曾经将项目填充到列表中,如下所示:

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

效果很好,将项目放置在列表上并映射到右列。 现在,我面临的挑战是不对这些属性进行硬编码,而要在XML文件中创建自己的属性。 我想这将要求类MyItem在某种程度上是动态的。

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

 foreach (var conf in GetColumnConfiguration())
{
        {
           GridViewColumn gvc = new GridViewColumn()
            {
                Header = GetHeaderDisplayName(),
                DisplayMemberBinding = new Binding(GetBindingName())


            };
 }

但是我不确定如何采取类似的方法在ListView上添加项目。

我正在使用.NET 3.5。 该应用程序不能使用.NET 4或更高版本,但是如果需要,我可以安装自定义程序集。

谢谢!

您可能想使用XmlDataProvider(只需在Google上进行搜索)并设置AutoGenerateColumns="true"

我通过在运行时使用反射创建类来解决该问题,灵感来自于这篇文章: http : //mironabramson.com/blog/post/2008/06/Create-you-own-new-Type-and-use-it运行时(C).aspx

然后,我可以处理用户的变量属性。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM