我们正在使用 Windows 窗体运行 .NET 4.0 应用程序。该应用程序对两种不同类型的对象使用单一表单。
namespace NetIssue
{
public partial class Form1 : Form
{
B myObj;
public Form1()
{
InitializeComponent();
myObj = new B();
}
private void Form1_Load(object sender, EventArgs e)
{
textBox1.DataBindings.Add(new Binding("Text", myObj, "c.Message"));
}
}
public class Comment {
public int ID { get; set; }
public string Message { get; set; }
public Comment(string msg)
{
Message = msg;
}
}
public class A {
string MyName = "";
}
public class B : A {
public Comment c { get; set; }
public B()
{
c = new Comment("test");
}
}
}
当上面的绑定(bind)在 .NET 4.0 中运行时,我们得到错误
但是,如果我们安装 .NET 4.5,这个错误就会消失。
这是 .NET 4.0 的限制、.NET 4.0 中的错误还是其他原因?
最佳答案
小故事:Windows 窗体数据绑定(bind)不支持属性路径,这就是您收到错误的原因。
好吧,这就是我直到今天的想法。但是在尝试您的代码时,我很惊讶 确实 可以在 .NET 4.5 机器上运行!所以看起来 MS 在某个时候添加了这一点 - 老实说,不知道什么时候。但它现在就在那里!无论如何,如果考虑向后兼容性,则应避免使用该功能(尽管这很遗憾)。
关于c# - 数据绑定(bind)到嵌套属性 - 无法绑定(bind)属性或列(Winforms),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33789575/