我一直遇到 Winforms 数据绑定问题,更具体地说,每当我指定一个以句点分隔的属性路径用作DataMember
. 例如:
public partial class SomeForm : System.Windows.Forms.Form
{
public SomeForm(Book bookToBeDisplayed)
{
InitializeComponent();
authorLabel.DataBindings.Add("Text", bookToBeDisplayed, "Author.Name");
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
// I cannot get this to work.
}
}
public class Book : INotifyPropertyChanged
{
public Person Author { … }
…
}
public class Person : INotifyPropertyChanged
{
public string Name { … }
…
}
我在其中添加绑定的行authorLabel.Text
并bookToBeDisplayed.Author.Name
引发以下异常:
ArgumentException:无法绑定到 DataSource 上的属性或列名称。
MSDN 页面System.Windows.Forms.Binding
的“备注”部分解释了以句点分隔的导航路径可用作DataMember
:
当您绑定到其属性返回对其他对象的引用的对象(例如具有返回其他类对象的属性的类)时,您还可以使用以句点分隔的导航路径。
我必须做什么才能使上述示例正常工作?
- 我已经确保
Book
传递给 的构造函数的实例SomeForm
已正确初始化,并且没有null
引用。 - 我也不想诉诸于
DataSets
。