2

カスタム コントロールから BindingList 内のオブジェクトへのバインディングを作成しようとしています。

テキストボックスを使用しながら、簡単に書くことができます

textBox.DataBindings.Add("Text",myBindingList,"PropertyOfObjectOfBindingList")

私のカスタム プロパティ「値」では、これは機能しません (オブジェクトは更新されません)。

カスタム コントロールを機能させるには、何を実装すればよいですか? 既に INotifyPropertyChanged を実装しましたが、機能しません。

この行を機能させたいだけです:

customControl.DataBindings.Add("CustomProperty",myBindingList,"PropertyOfObjectOfBindingList")

編集1:

私はウェブでこれを読みました: http://kbalertz.com/327413/control-using-Visual.aspxしかし、現時点ではうまくいきません。

4

3 に答える 3

1

バインドされたオブジェクトが更新されないと言ったので (コントロール -> オブジェクトの変更からだと思います)、正しくバインドされているので、これが役立つかもしれません:

customControl.DataBindings.Add("CustomProperty", list, "BoundObjectProperty", 
    false, DataSourceUpdateMode.OnPropertyChanged);
于 2011-05-20T12:57:35.447 に答える
0

カスタム コントロールでの複雑なデータ バインディングの実装の記事が役立つかもしれません。

于 2011-05-20T11:56:56.520 に答える
0

私は自分で問題を解決しました:

リンクした記事は良い提案ですが、間違った部分があります。カスタム クラスで PropertyChangedEventHandler を使用してイベントを作成する必要はありませんが、EventHandler を使用するだけです。

public event EventHandler CustomPropertyChanged;

すべてを機能させるには十分です。明らかに、プロパティが変更されたときに呼び出す必要があります

編集1:

テキストボックスで、コントロールがフォーカスを失うとバインディングリストが更新されるという悪いことを発見しました。カスタムコントロールでは、リストボックスで選択した項目を変更した場合にのみ発生します。

現時点ではこれを解決する方法が見つかりません。

于 2011-05-20T13:23:47.040 に答える