В программе есть кнопка по нажатию которой пользователь может сбросить значения всех настроек к значению по умолчанию. Настройки хранятся в объекте SettingsVM
Настроек достаточно много и чтобы не обнулять каждое свойство по отдельности я просто создаю новый объект.
public class MainVM : BaseVM
{
public SearchVM SearchVM { get; set; }
public static SettingsVM SettingsVM { get; set; }
public MainVM()
{
SearchVM = new SearchVM();
SettingsVM = new SettingsVM();
ResetSettingsCommand = new RelayCommand(ResetSettings);
}
public ICommand ResetSettingsCommand { get; }
private void ResetSettings()
{
SettingsVM = new SettingsVM();
OnPropertyChanged(String.Empty);
}
}
Проблема в том, что после отрабатывания метода ResetSettings интерфейс не меняется, а остается привязан к "старому" объекту.
Как исправить такое поведение?
Ответ
Ваше свойство SettingsVM, содержащее настройки, статическое. Для него интерфейс INotifyPropertyChanged не работает. Сделайте свойство нестатическим.
Вам понадобится изменить и код привязки в XAML, для нестатических свойств он другой (проще).
Комментариев нет:
Отправить комментарий