Я искал все остальные вопросы с той же проблемой. Но я не могу найти от них никакого решения.OnPropertyChanged() не работает в MVVM
OnPropertyChanged стреляет, но элемент управления не обновляется. Я использую 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 Код
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;
}
}
Код модели
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));
}
Отображается ли на вашем выходном окне какая-либо ошибка привязки? – M312V
Вы уверены, что вы вызываете метод 'Login' на правильном экземпляре' LoginViewLogic'? У вас их два, может быть, когда вы привязываетесь к ресурсу UserData, вы вызываете метод на ресурсе 'LoginViewLogic'? По крайней мере, недостающая реализация 'INotifyPropertyChanged' в модели представления не является вашей проблемой (хотя это не повредит ее реализации). – Clemens
Нет ошибки привязки, все остальные привязаны одинаково и работают. Я реализовал NotChanged в модели представления. –