I searched through all other question with the same problem. But I can't find any solution from them.

**OnPropertyChanged** is firing but the Control is not updating. I'm using the **Mahapps.Metro ProgressRing Control**.

**View Code**

```
<controls:MetroWindow.Resources>
        <userObj:LoginViewLogic x:Key="UserData"/>
        <userObj:LoginViewLogic x:Key="LoginViewLogic"/>
    </controls:MetroWindow.Resources>

    <Grid>
        <Canvas>
            <controls:ProgressRing Name="ProgressRing"  Canvas.Left="133" Canvas.Top="154" Height="50" Width="35" IsActive="{Binding Source={StaticResource UserData},Path=UserData.IsProgressRingActive}"/>
        </Canvas>
    </Grid>

```

**ViewModel Code**

```
    public class LoginViewLogic {

    public LoginViewLogic() {

       _userData = new User(AppSettings.ReadCredentials(),(bool)loadedSettings); 
    }

    private User _userData;
    public User UserData
    {
        get { return _userData; }
        set { _userData = value; }
    }

    public async void Login() {

        _userData.IsProgressRingActive = true;
        var loginResult = await Stuff.Login(_userData);

        if (!loginResult) {
            MessageBox.Show("You have entered an invalid username or password",
                "Information", MessageBoxButton.OK, MessageBoxImage.Error);
            _userData.IsProgressRingActive = false;
        }
    }

```

**Model Code** 

```
 public class User : INotifyPropertyChanged {

        private bool _isProgressRingActive;
        public bool IsProgressRingActive {

            get { return _isProgressRingActive; }
            set {
                _isProgressRingActive = value;
                OnPropertyChanged("IsProgressRingActive");
            }
        }

        public event PropertyChangedEventHandler PropertyChanged;
        protected virtual void OnPropertyChanged(string propertyName) {
            PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
        }

```