Как привязать заголовок ObjectListview к объекту?
У меня есть один ObjectListview, который должен показывать разные модели, пока пользователь переключает некоторые элементы управления. Таким образом, использование дизайнера форм не позволяет установить заголовки / столбцы. Мне нужно их динамически переключать.
Я знаю, что могу сделать это с помощью AllColumns
описано здесь, удалите и добавьте снова. Но мой вопрос заключается в том, могу ли я сделать это через какой-то объект, точно так же, как я передаю данные в представление списка? Тогда у меня был бы другой объект столбцов наряду с объектом данных, и я бы переключал их вместе.
1 ответ
Если вы посмотрите в кулинарную книгу, то номер 29, вероятно, то, что вам нужно. http://objectlistview.sourceforge.net/cs/recipes.html
(Ниже взято из этого источника).
E сть Generator
класс, в который вы можете передать свою модель, и он автоматически создаст столбцы на основе открытых свойств.
Generator.GenerateColumns(this.olv1, typeof(MyModelClass), true);
Вы даже можете улучшить свою модель, используя OLVColumn
атрибутов.
public class MyClass {
[OLVColumn(Width = 150)]
public DateTime When { get; set; }
[OLVColumn(DisplayIndex = 5, Width = 75, TextAlign = HorizontalAlignment.Right)]
public decimal Rate { get; set; }
[OLVColumn("From", DisplayIndex=1, Width = 50, TextAlign = HorizontalAlignment.Center)]
public string FromCurrency { get; set; }
[OLVColumn("To", DisplayIndex = 3, Width = 50, TextAlign = HorizontalAlignment.Center)]
public string ToCurrency { get; set; }
[OLVColumn("Amount", DisplayIndex = 2, AspectToStringFormat = "{0:C}", Width = 75, TextAlign = HorizontalAlignment.Right)]
public decimal FromValue { get; set; }
[OLVColumn("Amount", DisplayIndex = 4, AspectToStringFormat = "{0:C}", Width = 75, TextAlign = HorizontalAlignment.Right)]
public decimal ToValue { get; set; }
[OLVColumn(IsVisible = false)]
public string UserId { get; set; }
}