2016-08-17 11 views
0

У меня есть следующие в моих пользовательских настроек в пределах приложения WPF MVVM:Почему Properties.Settings.Default.PropertyChanged не работает?

namespace MyApp.Properties { 

    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 
    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "14.0.0.0")] 
    internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { 

     private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); 

     public static Settings Default { 
      get { 
       return defaultInstance; 
      } 
     } 

     [global::System.Configuration.UserScopedSettingAttribute()] 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 
     public global::System.Collections.ObjectModel.ObservableCollection<MyApp.Models.MyItem> MyItems { 
      get { 
       return ((global::System.Collections.ObjectModel.ObservableCollection<MyApp.Models.MyItem>)(this["MyItems"])); 
      } 
      set { 
       this["MyItems"] = value; 
      } 
     } 

     [global::System.Configuration.UserScopedSettingAttribute()] 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 
     [global::System.Configuration.DefaultSettingValueAttribute("")] 
     public string TestSetting { 
      get { 
       return ((string)(this["TestSetting"])); 
      } 
      set { 
       this["TestSetting"] = value; 
      } 
     } 
    } 
} 

Когда значение TestSetting изменений, событие Properties.Settings.Default.PropertyChanged обжигают, однако, когда MyItem в пределах MyItems изменений, это событие не уволили ,

Как я могу получить это событие?

ответ

2

Объект, присвоенный собственности, должен запускать собственные события при изменении коллекции, общий интерфейс для этого - INotifyCollectionChanged, который уже реализован в ObservableCollection<T>. Вы должны прослушать присвоение свойства через PropertyChanged, а затем подписаться на событие CollectionChanged вновь назначенной коллекции.