C# WinForms数据绑定-绑定到列表中的对象
我需要一些关于WinForms数据绑定的帮助/指导,但我似乎无法让谷歌帮我解决这个问题 这是我的设想。考虑下面的类与我所需要的类似:C# WinForms数据绑定-绑定到列表中的对象,c#,.net,winforms,data-binding,C#,.net,Winforms,Data Binding,我需要一些关于WinForms数据绑定的帮助/指导,但我似乎无法让谷歌帮我解决这个问题 这是我的设想。考虑下面的类与我所需要的类似: public class Car { public string Name { get; set; } public List<Tire> Tires { get; set; } } public class Tire { public double Pressure { get; set; } } 但是当我的列表包含20个
public class Car
{
public string Name { get; set; }
public List<Tire> Tires { get; set; }
}
public class Tire
{
public double Pressure { get; set; }
}
但是当我的列表包含20个对象而不是4个对象时,这就变得非常糟糕了,对于这些对象中的每一个,我都想根据6个属性进行绑定。这就是一个巨大的“BindableObject” 虽然WinForms designer可能不允许您这样做,但您是否尝试过在代码中设置绑定?我想将文本框绑定到某个car.Tires[1].Pressure是没有问题的。您应该注意,您可以将控件绑定到实现接口的任何对象类型
IList
、ICollection
或IEnumerable
或继承自实现这些接口的类。泛型集合也符合这种绑定的条件
它们在内部转换为IBindingList
实例
有关详细信息,请查看以下链接:
不,我没有,因为我认为由于设计师提示的消息,这不受支持。我会尽快试一试的。一张便条。在第一个链接中,它说“…Windows窗体对象模型不支持绑定到…
IEnumerable
接口,因为绑定到简单对象以外的任何对象时都需要向后滚动支持。”。您说,IEnumerable
将自动转换为IBindingList
。您应该能够通过代码而不是设计器绑定到列表。这是一个(几个小时前)的例子。在我看来,您已经用正确的方法解决了这个问题,为您的汽车类创建了一个“视图”对象包装器,并在UI中使用它。也许,你有一个你在UI中显示的汽车列表,所以你会想读一下CurrencyManager,看看这将如何帮助你的发展…从10年前开始。
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; }
}
}