コンボボックスに関する興味深いデータバインディングの質問があります。誰かが良い提案を持っていることを願っています。ComboBoxデータバインディングの質問
私はシンプルなフォームを持っています。ファイルピッカーとcomboxboxを含んでいます。ファイルが選択されるたびに、ファイルからListオブジェクトへの文字列のリストを読み込み、comboBox.DataSource = listOfStringsを設定します。
フォームのロードイベントでは、comboBox.DataBindings.Add( "SelectedItem"、myObject、 "PickedValue")を設定しました。
目的はっきりしています:コンボボックスから文字列を選択するたびに、その文字列をmyObject.PickedValueに書きたいと思います。
これはすべての話です。
私はフォームを起動します。ファイルを選択するのではなく、まずコンボボックスを確認します。もちろん、この時点で、comboBox.DataSourceはnull、comboBox.SelectedItemもnullです。しかし、comboBoxのデータバインディングはすでに設定されています(設定はフォームロードイベントになっています)。今では私の焦点をコンボボックスから他の場所に移動することはできません。
私はコンボボックスをチェックしようとすると、それはSelectedItemとしてnullがあると思います。フォーカスを別の場所に移動しようとすると、コンボボックスのデータバインディングがトリガーされます。基本的には、選択された項目を文字列に変換し、その変換された文字列でmyObject.PickedValueを更新しようとします。 nullを文字列に変換することはできないので、データバインディングの検証は失敗し、検証メカニズムではフォーカスを他の場所に移動することができず、この時点で私は吸っています。ファイルを選択することもできません。
私の質問は、このトラップを防ぐためのアプリケーションシナリオでの通常のバインディングセットアップの作業フローは何ですか?そのようなデータバインディングを設定する正しい順序は何ですか?データソースが何かで満たされる前にコンボボックスを確認できますか?
参考までに、コンボボックスのSelectedTextプロパティにmyObject.PickedValueをバインドしようとしました(SelectedTextがnullでないことに気づきました)。しかし興味深いことに、コンボボックスから何かを選択しても、データバインディングがトリガーされるとき、SelectedTextはまだ空文字列です。ここで何が間違っていますか?
ありがとうございました。
私に回避策を教えていただきありがとうございます。私はそれは準備ができているまで、コンボボックスを無効にするというアイデアは良いアイデアだと思います。 SelectedTextプロパティがなぜ私にとってうまくいかないのかを説明してくれてありがとう。私は答えとしてそれを取ると思う。 – Steve