wpf Combobox und selectedItem



  • Hallo.

    Ich bin am verzweifeln.

    Habe eine stink normale Combobox.

    //view
    // -----------------
    <ComboBox ItemsSource="{Binding Recipes}"
    SelectedItem="{Binding SelectedRecipe}" DisplayMemberpath="Name" />

    // -----------------

    Bei der ich nichts anderes gesetzt habe als die Source und das SelectedItem.

    viewmodel
    // -----------------
    public ObservableCollection<Recipe> Recipes
    {
         get { return (ObservableCollection<Recipe>) _profileControlService.ActiveProfile.Recipes; }
    }
    
    public Recipe SelectedRecipe
    {
        get { return _profileControlService.SelectedRecipe; }
        set
        {                
           _profileControlService.SelectedRecipe = value;
        }
    }
    // ------------------
    
    class Recipe
    {
       private string _name;
       public string Name 
       { 
          get { return _name; } 
          set
          {
             if (value != _name)
       	 {
       	   _name = value;
               OnPropertyChanged("Name");
       	}
          } 
       }
    
       private bool _isDirty;
       public bool IsDirty
       {
          get { return _isDirty; }
          set
          {
             if (value != _isDirty)
             {
               _isDirty = value;
               OnPropertyChanged("IsDirty");
             }
          }
        }
    }
    

    Den Wert kann ich nun in der Combobox auswählen und alles ist gut.

    Wenn ich nun aber ein Property des SelectedRecipes ändere.

    z.B.

    _profileControlService.SelectedRecipe.IsDirty = true;
    

    Ist es mir nicht mehr möglich irgend einen Wert in der Combobox festzulegen. Die Liste lässt sich öffnen. Der Wert lässt sich auswählen. Er wird aber nicht übernommen und der setter von SelectedRecipe wird nicht mehr ausgeführt.

    Wieso. Ich bin wie gesagt mit meinem Latein am Ende. Kann mir jemand helfen?



  • Hi,

    implementiert dein ViewModel INotifyPropertyChanged? Wenn nein, dann kann das komisches Verhalten hervorrufen. Du musst auf jeden Fall im Setter von SelectedRecipe noch ein OnPropertyChanged feuern! Abgesehen davon sollte das Binding von SelectedItem wahrscheinlich TwoWay sein.

    mfG
    KaPtainCugel



  • PropertyChanged wird geworfen.

    Aber nichts desto trotz hat das damit nichts zu tun. PropertyChanged wird benötigt wenn der setter aus dem Code aufgerufen wird um die view zu benachrichtigen dass sich das Property geändert hat.

    Was heißt wahrscheinlich. Das Binding ist default immer TwoWay.
    Wenn es OneWay wäre könnte ich schon anfänglich nichts auswählen.



  • gefunden!

    _isDirty wurde noch zu GetHashCode verwendet. Au mei!


Log in to reply