Обновление привязки интерфейса

319
08 января 2017, 15:58

В программе есть кнопка по нажатию которой пользователь может сбросить значения всех настроек к значению по умолчанию. Настройки хранятся в объекте 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 интерфейс не меняется, а остается привязан к "старому" объекту.

Как исправить такое поведение?

Answer 1

Ваше свойство SettingsVM, содержащее настройки, статическое. Для него интерфейс INotifyPropertyChanged не работает. Сделайте свойство нестатическим.

Вам понадобится изменить и код привязки в XAML, для нестатических свойств он другой (проще).

READ ALSO
Как написать свою кнопку

Как написать свою кнопку

Подскажите как нарисовать точную кнопку взял из сайта: Ссылка на кнопку

352
В чем разница между XPathNavigator и XmlDocument?

В чем разница между XPathNavigator и XmlDocument?

В чем разница между XPathNavigator и XmlDocument?

409
LINQ to XML в С#

LINQ to XML в С#

Есть некий анонимный массив типов:

384
Показать метку на всех устройствах

Показать метку на всех устройствах

Работаю с Google-картой, используя XamarinМне нужно, чтобы метку (маркер), которую я поставил в своем приложении, увидели все устройства

309