我们正在使用 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/

10-12 00:26
查看更多