[英]WinForms data binding - Bind to objects in a list
我需要一些关于WinForms数据绑定的帮助/指导,我似乎无法让Google帮助我解决这个问题。
这是我的情景。 考虑以下类似于我需要的类:
public class Car
{
public string Name { get; set; }
public List<Tire> Tires { get; set; }
}
public class Tire
{
public double Pressure { get; set; }
}
我的实例将是Car类的一个对象,其中包含一个带有四个Tire对象的List。 请注意,我将在列表中始终具有已知数量的对象。
现在我想将数据绑定到包含五个文本框的Form。 一个带有汽车名称的文本框和一个带有每个轮胎压力的文本框。
有关如何使这项工作的任何想法? 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”!
您应该注意,您可以将控件绑定到任何实现接口IList
, ICollection
或IEnumerable
对象类型,或者从实现这些接口的类继承。 通用集合也有资格进行这种绑定。
这些内部转换为IBindingList
实例。
有关更多信息,请查看以下链接:
虽然WinForms设计师可能不允许您这样做,但您是否尝试在代码中设置绑定? 我想将文本框绑定到someCar.Tires [1]没有问题。压力。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.