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
。