[英]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.