2
オブジェクトのインスタンスへの単純なデータバインドを試みています。このような何か:IEnumerableを実装するオブジェクトのプロパティへのデータバインド
public class Foo : INotifyPropertyChanged
{
private int bar;
public int Bar { /* snip code to get, set, and fire event */ }
public event PropertyChangedEventHandler PropertyChanged;
}
// Code from main form
public Form1()
{
InitializeComponent();
Foo foo = new Foo();
label1.DataBindings.Add("Text", foo, "Bar");
}
私はTがint、文字列、何でもありのIEnumerableを実装するためのFooクラスを修正するまで、これは動作します。その時点で、データバインディングを追加しようとするとArgumentExceptionが発生します。DataSourceのプロパティまたは列バーにバインドできません。
私の場合、列挙は気にしません。オブジェクトの列挙できないプロパティにバインドしたいだけです。これに何かクリーンな方法がありますか?実際のコードでは、私のクラスはIEnumerableを実装していません。
私が瞬間を持っている最善の回避策は、オブジェクトをバインディングリストに入れて1つのアイテムだけを入れ、バインドすることです。あなたはおそらくそれにIEnumerableを、バインドを継承するクラス内に含まれる子クラスを作成することができます
- How can I databind to properties not associated with a list item in classes deriving List
- How can you databind a single object in .NET?
この問題の解決方法はありますか?私もこの問題を抱えていて、BindingListにプロパティの戻り値を変更すると、は実行できません。 –
私は良い解決策を見つけることを覚えていません。私は、このタイプのオブジェクトにはデータバインディングを使用しないことにしました。 –
Thx。私は、ExpressionTreeをとり、1つのProperty doバインドだけを含むBindingAdapterを作成しました。 ExpressionTreeは、WinFormsのデフォルトのバインディングよりもmutchをサポートしています。私は今テキストエディットをリストの特定の項目にバインドすることができます。私はBindingListにプロパティの型を変更できない理由は、動的なUIの魔女を作成しています。まあ、関係なく。 BindingAdapterは機能します。 –