0

Window.xaml 内にコンボボックスがあり、値 0 を持つプロパティ SelectedIndex とビューモデルのプロパティへのバインディングを持つプロパティ SelectedItem で初期化します。

かなり簡単に聞こえますが、基本的には次のようになります。

<ComboBox SelectedItem = "{Binding MyChosenItem}" SelectedIndex="0" ItemsSource={Binding MyList} />

文字列の単純なリストである MyList 内では、最初のエントリは "---NULL--" のようになります。ユーザーがまだ何も選択していないことを示す単なる静的エントリです。

アプリケーションを起動すると、SelectedIndex = 0 のため、コンボボックスはその SelectedItem を「---NULL---」に設定し、さらに MyChosenItem も「---NULL---」に設定されます。これはコンボボックスの SelectedItem であるためです。

ここまではうまくいきましたが、コンボボックスを引き裂いて、MyChosenItem に値を設定すると、コンボボックスが選択を「---NULL---」に設定しない可能性があることを知りたいと思います。

次に例を示します。

MyChosenItem = null の場合、コンボボックスは "---NULL---" を標準値として選択しますが、MyChosenItem = "BMW" の場合、コンボボックスは MyList 内の 4 番目の項目である BMW を選択項目として選択します。

WPFでこれを行うにはどうすればよいですか? 問題は、常に最初の項目を選択された項目として設定しようとする SelectedIndex ですが、4 番目の項目が必要です。最初のアイテムが設定された後、そのポイントにタイムトラベルする必要がありますか?コンボボックスの SelectedItem を 4 番目に設定しますか?

何か案は?誰かが過去にこれに出くわしましたか?

編集:コンボボックスがサードパーティのコントロールであることに言及するのを忘れていました。彼らはどういうわけか手動で SelectedIndex = 0 を設定したので、それを変更する機会がありません。したがって、この質問で与えられた要件に固執するようお願いします。誰かがこれを解決する方法、または少なくとも良い回避策を見つけてくれることを願っています。

4

1 に答える 1

0

まずSelectedIndexは 0 ベースなので、最初の項目を選択する場合は を使用する必要がありますSelectedIndex=0。この状況で通常行われるのは、MyChosenItem="---NULL--"代わりに初期化することであり、次のようにnullなります。ComboBox

<ComboBox SelectedItem ="{Binding MyChosenItem, Mode=TwoWay}"
 ItemsSource={Binding MyList}/>

最初のtoが を "---NULL--" に更新するSelectedIndexため、 はもう必要ありません。TwoWay BindingMyChosenItemSelectedItem

于 2013-05-23T09:47:54.140 に答える