title: DP Callback not firing then property changed in constructor
body: <p>I have an <code>ObservableCollection</code> that using in <code>RichTextBox</code> behavior:</p>
  
  <pre><code> public ObservableCollection&lt;SendContent&gt; RtbContent
      {
          get { return (ObservableCollection&lt;SendContent&gt;)GetValue(RtbContentProperty); }
          set { SetValue(RtbContentProperty, value); }
      }
  
      // Using a DependencyProperty as the backing store for RtbContent.  This enables animation, styling, binding, etc...
      public static readonly DependencyProperty RtbContentProperty =
          DependencyProperty.Register("RtbContent",
              typeof(ObservableCollection&lt;SendContent&gt;),
              typeof(RTBBehavior),
              new UIPropertyMetadata(new ObservableCollection&lt;SendContent&gt;(), new PropertyChangedCallback(RtbContentPropertyChanged)));
  
  
      public RTBBehavior()
      {
          SetValue(RtbContentProperty, new ObservableCollection&lt;SendContent&gt;());
      }
  
      private static void RtbContentPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs er)
      {
         NotifyCollectionChangedEventHandler handler= (s, e) =&gt; coll_CollectionChanged(s, e, d);
  
  
          if (er.NewValue !=null)
          {
              var coll = (ObservableCollection&lt;SendContent&gt;)er.NewValue;
              coll.CollectionChanged += handler;
          }
          if (er.OldValue !=null)
          {
              var coll = (ObservableCollection&lt;SendContent&gt;)er.OldValue;
              coll.CollectionChanged -= handler;
          }
      }
  
      private static void coll_CollectionChanged(object se, NotifyCollectionChangedEventArgs en, DependencyObject dob)
      {
          PropertyChangedEventHandler handler = (s, e) =&gt; Item_PropertyChanged(se, e, dob);
  
          if (en.NewItems != null)
          {
              var coll = (ObservableCollection&lt;SendContent&gt;)se;
  
              foreach (var item in coll)
              {
                  item.PropertyChanged += handler;
              }
          }
          if (en.OldItems != null)
          {
              var coll = (ObservableCollection&lt;SendContent&gt;)se;
  
              foreach (var item in coll)
              {
                  item.PropertyChanged -= handler;
              }
          }
      }
  
      private static void Item_PropertyChanged(object s, PropertyChangedEventArgs e, DependencyObject dob)
      {
          List&lt;string&gt; list = new List&lt;string&gt;();
          var rtb = (RichTextBox)dob;
          var collect = (ObservableCollection&lt;SendContent&gt;)s;
          var dobj = (RichTextBox)dob;            
  
          foreach (var item in collect)
          {
              if (item.Value2)
              {
                  list.Add(item.Value1);
              }
          }
  
          if (list.Contains("Some2"))
          {
              dobj.Background = Brushes.Red;
          }
          else
          {
              dobj.Background = Brushes.Green;
  
          }
      }
  </code></pre>
  
  <p>It works fine if i create new collection in constructor <code>Collect = new ObservableCollection&lt;SendContent&gt;();</code> and add items on button click for example</p>
  
  <pre><code>Collect.Add(new SendContent { Value1 = "Some0", Value2 = true });
  </code></pre>
  
  <p>But then i try Add items in constructor, <code>RtbContentPropertyChanged</code> firing once and get already filled collection <code>er.NewValue</code>and it does not turn to subscribe to the change of each added item. How can I avoid it?</p>