private ListViewItem BuildListViewItem(ListItemContent contentItem) { ListViewItem listViewItem = null; var entry = contentItem.Entry; foreach (ColumnHeader column in Columns) { var propertyInfo = entry.GetType().GetProperty(column.Name); if (null == propertyInfo) { throw new BadTemplateException($"Property {column.Name} not found in ListItemContent!"); } var value = propertyInfo.GetValue(entry, null); string text = DisplayContentHelper.GetText(propertyInfo, value); if (null == listViewItem) { listViewItem = new ListViewItem(text) { Tag = entry }; listViewItem.SubItems[0].Tag = value; } else { var subItem = new ListViewItem.ListViewSubItem { Text = text, Tag = value }; listViewItem.SubItems.Add(subItem); } } if (null != listViewItem) { if (null != contentItem.Group) { listViewItem.Group = Groups[contentItem.Group]; } if (null != contentItem.ImageKey) { listViewItem.ImageKey = contentItem.ImageKey; } } return(listViewItem); }
public void InsertItem(ListItemContent contentItem) { if (null == contentItem) { throw new ArgumentNullException(nameof(contentItem)); } var listViewItem = BuildListViewItem(contentItem); BeginUpdate(); Enabled = false; Items.Insert(0, listViewItem); Enabled = true; EndUpdate(); EnsureVisible(listViewItem.Index); }