アップデート
少し調べた後。問題と思われるのは、Item ソースの読み込みが完了する前に SelectedValue/SelectedItem が発生していることです。ブレークポイントに座って数秒待つと、期待どおりに動作します。どうやってこれを回避するのかわかりません。
更新終了
ComboBoxでMVVMを使用してWPFで使用するアプリケーションがあります。以下はViewModelの例です。私が抱えている問題は、ページを離れて元に戻すときに、ComboBox が選択されている現在の値を選択していないことです。
モデルを見る
public class MyViewModel
{
private MyObject _selectedObject;
private Collection<Object2> _objects;
private IModel _model;
public MyViewModel(IModel model)
{
_model = model;
_objects = _model.GetObjects();
}
public Collection<MyObject> Objects
{
get
{
return _objects;
}
private set
{
_objects = value;
}
}
public MyObject SelectedObject
{
get
{
return _selectedObject;
}
set
{
_selectedObject = value;
}
}
}
この例では、MyObject に 2 つのプロパティ (Text と Id) があるとします。ComboBox の XAML は次のようになります。
XAML
<ComboBox Name="MyComboBox" Height="23" Width="auto"
SelectedItem="{Binding Path=SelectedObject,Mode=TwoWay}"
ItemsSource="{Binding Objects}"
DisplayMemberPath="Text"
SelectedValuePath="Id">
ページに戻ってオブジェクトが再構築されたときにこれをどのように構成しても、ComboBox は値を選択しません。ただし、オブジェクトはプロパティの get を介して正しいオブジェクトを返しています。
これが単に ComboBox と MVVM パターンの動作の問題なのかどうかはわかりません。行っているテキスト ボックスのバインディングは正しく機能します。