我需要一些关于WinForms数据绑定的帮助/指导,但似乎谷歌无法为我提供帮助。
这是我的情况。考虑以下类,它类似于我所需的内容:
public class Car
{
public string Name { get; set; }
public List<Tire> Tires { get; set; }
}
public class Tire
{
public double Pressure { get; set; }
}
我的实例将是一个具有四个Tire对象的List的Car类对象。请注意,这里我总是知道列表中的对象数量。
现在我想将其数据绑定到包含五个文本框的表单上。其中一个文本框显示汽车名称,每个轮胎的压力都有一个文本框。
有什么办法让它工作?VS中的设计师似乎不允许我通过分配到列表索引(如Tires [0] .Pressure)来设置此项。
我目前的解决方案是绑定到一个“BindableCar”,它会像这样:
public class BindableCar
{
private Car _car;
public BindableCar(Car car)
{
_car = car;
}
public string Name
{
get { return _car.Name; }
set { _car.Name = value; }
}
public double Tire1Pressure
{
get { return _car.Tires[0].Pressure; }
set { _car.Tires[0].Pressure = value; }
}
public double Tire2Pressure
{
get { return _car.Tires[1].Pressure; }
set { _car.Tires[1].Pressure = value; }
}
public double Tire3Pressure
{
get { return _car.Tires[2].Pressure; }
set { _car.Tires[2].Pressure = value; }
}
public double Tire4Pressure
{
get { return _car.Tires[3].Pressure; }
set { _car.Tires[3].Pressure = value; }
}
}
但是,当我的列表包含20个对象而不是4个对象时,情况就变得非常丑陋了,而且对于这些对象中的每一个对象,我都想绑定6个属性。这使得“BindableObject”非常庞大!