У меня постоянно возникают проблемы с привязкой данных 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: невозможно связатьдля свойства или столбца Name в источнике данных.
В разделе «Замечания» на странице MSDN о System.Windows.Forms.Binding
объясняется, что пути навигации, разделенные точками, могут бытьиспользуется как DataMember
:
Вы также можете использовать путь навигации с разделителями точек при привязке к объекту, свойства которого возвращают ссылки на другие объекты (например, класс со свойствами, которые возвращаютдругие объекты класса).
Что мне нужно сделать, чтобы приведенный выше пример работал?
- Я уже убедился, что экземпляр
Book
, переданный конструктору SomeForm
, правильно инициализирован и что нет ссылок null
. - Я тоже не хочу прибегать к
DataSets
.