1

まず、Listbox を用意し、DataSource を MyObjectCollection に設定します。

MyObjectCollection は、MyObject を含む Interface IListSource を実装します。

MyObject にはメソッドがあります

public override string ToString()
{
    return "test";
}

リストボックスに、MyObjectCollection の各要素の「test」が表示されるようになりました。

しかし、IListSource インターフェイスを MyObject にも適用するとします。リストボックスに空の文字列が表示されます。「MyObject」クラスでそれを修正する方法。回避策は、Listbox Format イベントで修正することですが、すべての GUI 要素でこの回避策を実装する必要があります:/

4

1 に答える 1

1

一般に、物はリストである、バインディング用のエンティティである必要がありますそれがリスト (IListまたは) の場合、データ バインディング API の多くは、サブリストの最初の項目IListSourceが実際に必要であると想定します (単純バインディング シナリオの場合、つまり 1 行) 。

を実装MyObject しないように変更するだけですIListSourceが、カプセル化して、おそらくItemsプロパティを介して公開します。カスタムTypeConverterが機能するかどうかを確認することもできます (調査します...)

于 2009-09-10T15:36:54.783 に答える