**Project Overview**

Basically I was creating WPF application using MVVM pattern. However I had a thread which was updating my Data Model, so ViewModel, had to be notified about these changed and I needed a Notification mechanism in my Model. That would make my app make propagating notifications from one class to another, so I decided to Have model which talks directly to View, I have used some other techniques to separate my Model from the rest of the code, so I still got my logic separate from my UI.

**Problem**

When My Thread changes the value in the model, it calls the `OnPropertyChanged()`, however my View doesn't get the changes.

**Code *(This is a simplified version of my project)***

**Thread which update the Model**

```
class MyThread
{
    Model mdl;
    public MyThread()
    {
        mdl = new Model();
    }

    public Model getModel()
    {
        return mdl;
    }

    public void run()
    {
        while (true)
        {

            mdl.Age++;
            Thread.Sleep(1000);
        }
    }
}

```

**My Model**

```
class Model : INotifyPropertyChangedBase
{
    private int _age = 0;

    public int Age
    {
        get { return _age; }
        set
        {
            var init = _age;
            this.CheckPropertyChanged<int>("Age", ref init, ref value);
        }
    }
}

```

**My view has the following Binding**

```
<TextBlock Text="{Binding Age}" />

```

**Code For INotifyPropertyChangedBase**

```
namespace BindingTesting
{
    public abstract class INotifyPropertyChangedBase : INotifyPropertyChanged
    {
        public event PropertyChangedEventHandler PropertyChanged;

        #region Methods

        [Conditional("DEBUG")]
        [DebuggerStepThrough]
        public void VerifyPropertyName(string propertyName)
        {
            // verify that the property name matches a real,  
            // public, instance property on this object.
            if (TypeDescriptor.GetProperties(this)[propertyName] == null)
            {
                Debug.Fail("Invalid property name: " + propertyName);
            }
        }

        protected bool CheckPropertyChanged<T>(string propertyName, ref T oldValue, ref T newValue)
        {
            if (oldValue == null && newValue == null)
            {
                return false;
            }

            if ((oldValue == null && newValue != null) || !oldValue.Equals((T)newValue))
            {
                oldValue = newValue;
                OnPropertyChanged(propertyName);
                return true;
            }

            return false;
        }

        protected void OnPropertyChanged(string propertyName)
        {
            this.VerifyPropertyName(propertyName);

            if (this.PropertyChanged != null)
            {
                this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
            }
        }

        #endregion
    }
}

```

**Other information**
The DataContext of my control is assigned to my Model. It works absolutely correct if I use DependecyProperty instead. get method, gets called, but data not updated.