Рассмотрим вариант использования пользовательского элемента списка, который имеет несколько строк и другие элементы данных, например изображения. Так что, если у меня есть список экземпляров данных, как я могу использовать источник данных для заполнения пользовательского списка. Я также хочу связать список с элементом отображения.
Образец класса
public class BeerData
{
public string imageUrl { get; set; }
public string name { get; set; }
public string brewery { get; set; }
public string beer { get; set; }
public double reiting { get; set; }
// ...
}
Личное усилие
В данный момент я использую datagridview
private BindingSource bs = new BindingSource();
// ...
bs.DataSource = typeof(BeerData);
foreach (BeerData entry in new BeerData[]{ new BeerData()
{
reiting = 4.2,
name = "Bell's Hopslam Ale",
brewery = "Bell's Brewery, Inc",
beer = "Imperiial IPA",
image = "http://upload.wikimedia.org/wikipedia/" +
"commons/6/60/Kriek_Beer_1.jpg"
}/* , ... */})
bs.Add(entry);
grid.DataSource = bs;
grid.AutoGenerateColumns = true;
lName.DataBindings.Add(new Binding("Text", bs, "name"));
lImage.DataBindings.Add(new Binding("ImageLocation", bs, "image"));
// ...
Личное усилие 2
public static class BeerLoader
{
public static List<BeerData> result = new List<BeerData>();
static BeerLoader() {
add1BogusDataInstance();
}
public static void add1BogusDataInstance()
{
foreach (BeerData entry in new BeerData[]{ new BeerData()
{
reiting = 4.2,
name = "Bell's Hopslam Ale",
brewery = "Bell's Brewery, Inc",
beer = "Imperiial IPA",
imageUrl = "http://upload.wikimedia.org/wikipedia/" +
"commons/6/60/Kriek_Beer_1.jpg"
}})
result.Add(entry);
}
public static List<BeerData> LoadData()
{
return result;
}
}
Образец желаемого результата
Пример части списка, которая заменит представление данных
Изображение Источник
Вопрос
Я предполагаю, что мне нужно создать user control
, а затем создать список этого пользовательского элемента управления или что-то эквивалентное. Не удалось найти пример winform с помощью Google, поэтому я хочу знать, как это сделать.