丸一日かけて徹底的に調べた基本的な質問です。
My Account オブジェクトには、Name プロパティを持つ KeyType オブジェクトがあり、すべて Linq to SQL によって生成されます。
私のバインディングソース:
var result = from account in Schema.Accounts select account as Account;
Data = new ComplexBindingList<Account>(result.ToList<Account>());
DataSource = Data;
ResetBindings(true);
Bradley Smith のブログから借用した私の ComplexBindingList には、次のインターフェイスがあります。
public class ComplexBindingList<T> : List<T>, ITypedList
これは私の DataGridView で動作します:
Columns.Add(CreateColumn("KeyType.Name", "Key Type");
このコードは例外の直前に機能するため、データは問題ありません。
var v = account.KeyType.Name;
これは私の TextBox では機能しません。「オブジェクト 'EPM.BODA.KeyType' のプロパティ アクセサ 'Name' が次の例外をスローしました:'オブジェクトがターゲット タイプと一致しません。'」という例外が発生します。
// Controller is my BindingSource
Binding binding = EditField.DataBindings.Add("Text", Controller, "KeyType.Name");
リフレクションが適切に機能していないという一般的な印象がありますが、ギャップを埋める方法の詳細が見つからないようです。どんな助けにも乾杯。