Вызов INotifyPropertyChanged не обновляет GUI
В классе view модели реализован INotifyPropertyChanged. Команда срабатывает, но интерфейс не обновляется. Поиск в сети не помог решить проблему. Подскажите пожалуйста, как сделать что бы UI обновлялся при вызове команды.
В файле MainWindow.xaml:
<Button Command="{Binding Path=LoadData}" IsEnabled="{Binding Path=IsLoadEnabled}" Margin="3" Content="{Binding Path=LoadMessage}" />
В файле MainWindow.xaml.cs:
// модель передаю через Dependency injection
public MainWindow(IDataModel model)
{
InitializeComponent();
this.DataContext = model;
}
Интерфейс IDataModel:
public interface IDataModel : INotifyPropertyChanged
{
public string LoadMessage { get; }
public bool IsLoadEnabled { get; }
public bool IsLoading { get; set; }
}
Реализация интерфейса IDataModel:
public class DataModel : IDataModel
{
...
// метод вызывается по нажатию на кнопку
private void LoadItemsData()
{
IsLoading = true;
_loader.LoadFirstItemsSet(100);
_loader.LoadSecondItemsSet(100);
IsLoading = false;
}
public event PropertyChangedEventHandler PropertyChanged;
private void CallPropertyChanged(string propertyName)
{
PropertyChangedEventArgs args = new PropertyChangedEventArgs(propertyName);
PropertyChanged?.Invoke(this, args);
}
public bool IsLoading
{
get
{
return _isLoading;
}
set
{
_isLoading = value;
CallPropertyChanged("IsLoading");
CallPropertyChanged("IsLoadEnabled");
CallPropertyChanged("LoadMessage");
}
}
public string LoadMessage => IsLoading ? "Loading..." : "Load";
public bool IsLoadEnabled => !IsLoading;
}
Регистрация в App.xaml.cs
private void ConfigureServices(IServiceCollection services)
{
...
services.AddSingleton(typeof(IDataModel), typeof(DataModel));
services.AddSingleton(typeof(MainWindow));
}