MVVMでSilverlightを使用して、セレクションされた値をプリロードされたコンボボックスに設定しようとしています。プリロードされたコンボボックスの選択された値を設定するためにオブジェクトを比較するMVVM
値を選択する前に、これらのコンボボックスアイテムを読み込みます。
たとえば、国を選択するためのコンボボックスがあります。私の最初のステップは、コンボボックスソースにバインドされているリストをロードすることです。これは完全にロードされています。
この後、私は "SelectedCountry"オブジェクトをコンボボックスのselectedItemに双方向バインディングでバインドしています。
これは、コンボボックスの値を選択して、SelectedCountryオブジェクトが正しく選択されている場合に最適です。
ViewModelで選択した値を割り当てようとすると問題が発生します。この方法では、comboboxのselecteditemは更新されません。
実際、これらのオブジェクトは同じオブジェクトではない(同じ値を持っていますが、それらは異なる参照です)。
私はequalsメソッドを再実装すればよいのでしょうか?または、リスト内を検索して同じオブジェクトを見つける必要がありますか?同じ国籍の人が同じ国になるので、これは非常に簡単ですが、もっと複雑なオブジェクトを使うことができ、equalsメソッドが優れていると思います。
ありがとうございます!いくつかのコード例を追加するための
編集:
<ComboBox Grid.Column="7" Margin="6,0" Name="cBTipoPoliza" VerticalAlignment="Center" TabIndex="4" ItemsSource="{Binding TiposPolizas, Mode=OneWay}" SelectedItem="{Binding TipoPoliza, Mode=TwoWay}">
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding nombre_tipo}" />
</DataTemplate>
</ComboBox.ItemTemplate>
これはまた、HashCodeとoperator =もオーバーライドすることを意味します。あなたはそれをオーバーライドしている間operator =! –
私はこれを試しましたが、何も変わりません...私の "selectedValue"オブジェクトを割り当てると、equalsメソッドが評価されるのですか? – zapico
私はComboBoxコードを追加しました。私はあなたが言うようにそれをやっていると思う。 – zapico