2009-08-24 13 views
2

上の結合OneWayToSource:SelectedIndex設定ComboBox.SelectedIndexブレークは、次のデータテンプレートに表示されComboBox.SelectedItem

<ComboBox IsSynchronizedWithCurrentItem="False" 
      SelectedIndex="0" 
      SelectedItem="{Binding Path=Value, Mode=OneWayToSource}" 
      ItemsSource="{Binding Path=EnumeratedValues, Mode=OneTime}"/> 

が設定されている(上記のように)、OneWayToSourceが機能しないValueに結合します。 SelectedIndexを設定しないと、バインディングはValueになります。

しかし、私は本当に私はそれを設定する省略した場合ので、アイテムがComboBoxにデフォルトで選択されていない0からSelectedIndexを設定したいと思います。

Valueに私の拘束力を維持できる方法を誰も見ることができますが、同時にComboBoxの最初の項目がデフォルトで選択されていることを確認してください。

+0

Daveの間には何も表示されません。データテンプレートには...と表示され、SelectedIndexが設定されています(上記のように)... ソースコードがありません。 – Stewbob

+0

気にしないで、今すぐ表示されます。 – Stewbob

+0

私は同じ問題を抱えています。人々がそれだけではうまくいかないと言わずにいたら、私はショックを受けます。また、すべてのComboBoxが何かにバインドされている必要があるため、SelectedIndexの目的は何でしょうか(そうでなければ、それらは役に立たないでしょう)。 –

答えて

1

なぜ双方向バインディングを使用せず、コードのオブジェクトのValueプロパティを設定するだけですか?

編集:説明を追加しました。これにより、ビジネスオブジェクトで作業することができます。データバインドを使用するポイントは、ビジネスオブジェクトをUIから分離し、ビジネスオブジェクトを操作し、そのUIに反映させることです。

+0

私は実際これを考慮しましたが、SelectedIndexについては考えました。それに関係なく、ComboBoxがValueからデータを取り込もうとしているという事実が、データテンプレートに埋め込まれており、そのデータテンプレートが必ずしも使用されるわけではないため、扱いにくいものになります。私は2つのデータテンプレート(もう一方はComboBoxを持たない)を使い、使用するテンプレートはDataTemplateSelectorによって選択されます。 ComboBox(プログラムが存在する場合)をプログラマチックに取得する方法がわからないため、XAMLでの作業に取り組んでいます。しかし、私はあなたが示唆している方向に進み、これをプログラム的に行う方法を学ばなければならないと感じています。 – Dave

+0

私はあなたがデータテンプレートまたはコンボボックスで何かすべきことを言っているわけではありません。あなたのUIがバインドされているビジネスオブジェクトを更新すると言っています。双方向バインディングを使用している場合は、この変更を反映するようにUIが更新されます。データバインディングを正しく行うと、ビジネスオブジェクトで作業するだけで、cmbCustomer.SelectedIndex = 0; –

関連する問題