WPF MVVM ComboBox SelectedItem oder SelectedValue funktioniert nicht

Update

Nach ein bisschen Untersuchung. Was scheint zu sein, das Problem ist, dass die SelectedValue - /SelectedItem ist, der vor das Element source ist fertig geladen. Wenn ich sitzen in einer Pause, und warten Sie einige Sekunden, funktioniert es wie erwartet. Weiß nicht, wie ich werde, um dies zu umgehen.

End Update

Ich habe eine Anwendung in WPF mit MVVM mit einer ComboBox. Unten ist die ViewModel-Beispiel. Das Problem das ich habe ist, wenn wir unsere Seite verlassen und Wandern zurück die ComboBox ist nicht die Auswahl den aktuellen Wert ausgewählt ist.

View-Modell

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;
          }
      }
 }

Gründen der diesem Beispiel, sagen wir MyObject hat die beiden Eigenschaften (Text und Id). Mein XAML-Code für die ComboBox sieht wie folgt aus.

XAML

<ComboBox Name="MyComboBox" Height="23"  Width="auto" 
    SelectedItem="{Binding Path=SelectedObject,Mode=TwoWay}" 
    ItemsSource="{Binding Objects}"
    DisplayMemberPath="Text"
    SelectedValuePath="Id">

Egal wie ich konfigurieren, wenn ich kommen Sie zurück zu der Seite, und das Objekt ist wieder die ComboBox wird nicht wählen Sie den Wert aus. Das Objekt ist wieder das richtige Objekt über das erhalten in das Eigentum obwohl.

Ich bin mir nicht sicher, ob dies nur ein Problem mit der Art und Weise der ComboBox und MVVM-pattern funktioniert. Das Textfeld binden wir tun, richtig funktioniert.

InformationsquelleAutor der Frage cjibo | 2009-03-19

Schreibe einen Kommentar