Назначьте класс Collection элементам списка
Я уверен, что должен быть более простой способ сделать это. У меня есть класс, основанный на коллекции, и этот класс является коллекцией другого класса. В настоящее время, когда у меня появляется новый элемент в классе, я назначаю этот элемент списку. Я не могу найти способ назначить все значения в классе коллекции, потому что это коллекция, коллекции списка. Есть идеи? Спасибо
Хорошо, я до сих пор сделал переопределение tostring в классе, используемом в коллекции. Это то, что я хочу, чтобы список отображался.
public override string ToString()
{
return string.Format("{0} {1}: {2}", tTypev.ToString(),
Datev.ToString("MM/dd/yyyy"), Amountv.ToString("C"));
}
Это то, что я хочу, чтобы каждый элемент в списке отображался.
class Transactions : System.Collections.CollectionBase
{
...
}
Это мой класс коллекций, содержащий коллекцию другого класса, Tansaction. В настоящее время я использую lstTransactions.Items.Add(), .Remove, .RemovAt и т. Д. Для добавления элементов в поле списка, а.Add (),.Remove и т. Д. Для добавления элементов в класс Collection, Transactions. Но я пытаюсь уменьшить зависимость от внешних элементов управления и использовать их только в нескольких строках кода. Я пытался использовать что-то вроде:
lstTransactions.DataSource = (Transaction)myTrans;
но это не сработало. Главным образом потому, что я не мог понять, какое свойство взял DataSource.
Я также попробовал:
lstTransactions.Items =
но это сказало мне, что пункты были только для чтения.
1 ответ
В форме Windows:
- Вы можете использовать свойство DataSource для привязки коллекции объекта.
- Свойство DisplayMember для имени свойства в объекте источника данных.
Пример кода: В приведенном ниже примере в окне списка вывода будут отображаться 2 элемента: Apple и Ball.
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
EmployeeCollection data = new EmployeeCollection();
data.AddEmployee(new Employee("Apple", 25));
data.AddEmployee(new Employee("Ball", 50));
listBox1.DataSource = data;
listBox1.DisplayMember = "Name";
}
}
public class Employee
{
public Employee(string name, int age)
{
this.Name = name;
this.Age = age;
}
public int Age
{
get; private set;
}
public string Name
{
get; private set;
}
}
public class EmployeeCollection : System.Collections.CollectionBase
{
public void AddEmployee(Employee employee)
{
this.List.Add(employee);
}
}
}
В WPF:
Вы можете использовать свойство ItemSource ListBox, чтобы связать коллекцию (которая может быть List, Enumerable, Collections.._ делать работу
Образец фрагмента:
IList<string> data = new List<string>() {"A", "B"};
ListBox listBox = new ListBox();
listBox.ItemsSource = data;