WPF MVVMコンボボックスのSelectedItemまたはSelectedValueのは、調査の少し後に更新
を働いていません。問題は、アイテムソースの読み込みが完了する前にSelectedValue/SelectedItemが発生していることです。私がブレークポイントに座って数秒待っても、期待どおりに動作します。どのように私はこの1つを回避しようとしているのか分からない。
エンド更新
私はコンボボックスでMVVMを使用してWPFで使用してアプリケーションを持っています。以下はViewModelの例です。私が抱えている問題は、私たちのページを離れ、コンボボックスが選択されている現在の値を選択していない状態に戻るときです。
ビューモデル
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つのプロパティ(テキストやID)を持って言うことができます。 ComboBoxのXAMLは次のようになります。
XAML
<ComboBox Name="MyComboBox" Height="23" Width="auto"
SelectedItem="{Binding Path=SelectedObject,Mode=TwoWay}"
ItemsSource="{Binding Objects}"
DisplayMemberPath="Text"
SelectedValuePath="Id">
私は戻っページに来て、オブジェクトがコンボボックスに値を選択しないだろう再組み立てされたとき、私はこれを設定する方法に関係なく。オブジェクトはプロパティのgetを介して正しいオブジェクトを返しています。
これは、ComboBoxとMVVMパターンの仕組みに問題があるかどうかはわかりません。私たちがやっているテキストボックスのバインディングは正しく動作します。
UserControl_Loadedイベントにディスパッチャを追加することで問題を解決しました。私はPropertyChangeを上げていますが、コンボボックスは空白のままです。 – cjibo
もし私がブレークポイントを入れて、ちょっと待ってもそれはうまくいく。私は、コンボボックスのバインディングが完了する前に、私の選択した項目が設定されていると思っています。 Urgh。 – cjibo
私はPorpertyChangedイベントをナビゲーション上でページに戻すのを忘れました。 – cjibo