title: INotifyPropertyChanged and static properties
body: <p>I'm tying myself in knots over a simple problem. I have a class that implements <code>INotifyPropertyChanged</code>. Some of the instance properties' getters use static properties and thus their values may change if the static property changes? Here's a simplified example. </p>
  
  <pre><code>class ExampleClass : INotifyPropertyChanged
  {
  
      private static int _MinimumLength = 5;
      public static int MinimumLength
      {
          get
          {
              return _MinimumLength;
          }
          set
          {
              if (_MinimumLength != value)
              {
                  _MinimumLength = value;
                  //WHAT GOES HERE
              }
          }
      }
  
      private int _length = -1;
      public int length
      {
          get
          {
              return (_length &gt; _MinimumLength) ? _length : _MinimumLength;
          }
          set
          {
              var oldValue = (_length &gt; _MinimumLength) ? _length : _MinimumLength;
              if (_length != value)
              {
                  _length = value;
                  var newValue = (_length &gt; _MinimumLength) ? _length : _MinimumLength;
                  if (newValue != oldValue)
                  {
                      OnPropertyChanged("length");
                  }
              }
          }
      }
  
      public event PropertyChangedEventHandler PropertyChanged;
  
      [NotifyPropertyChangedInvocator]
      protected virtual void OnPropertyChanged(string propertyName)
      {
          if (PropertyChanged != null)
          {
              PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
          }
      }
  
  }
  </code></pre>
  
  <p>Clearly if the static property <code>MinimumLength</code> changes then every instance's property <code>length</code> may also change. But how should the static property signal the possible change to the instances? It cannot call <code>OnPropertyChanged</code> since that is not static.</p>
  
  <p>I could keep a list at the class level of all the instances and call a method on each one, but somehow that feels like overkill. Or I could pull the static properties out into a singleton class but logically they live at the class level. Is there an established pattern for this or should I be thinking about this differently?</p>