Обновить свойства из базовой ViewModel - PullRequest
0 голосов
/ 13 июня 2018

Я работаю над приложением форм Xamarin, и у меня есть экземпляр данных ViewModel моей текущей страницы, десериализованный до правильного типа в моей базовой ViewModel.Моя базовая ViewModel также реализует INotifiyPropertyChangedInterface.Данные модели представления, которые были сериализованы, содержат свойства с правильными данными.

Я ожидал, что он будет привязываться автоматически, поскольку реализован интерфейс INotifiyPropertyChangedInterface.Но ничего не происходит.Нужно ли что-то делать дальше?Если вам нужна дополнительная информация, чтобы помочь мне, пожалуйста, спросите.Не было большого количества кода, который я мог бы вставить, кроме десериализации json.

1 Ответ

0 голосов
/ 13 июня 2018

Ваш класс должен выглядеть примерно так:

public class Person : INotifyPropertyChanged
{
    private string nameValue = string.Empty;
    public event PropertyChangedEventHandler PropertyChanged;

    public string Name
    {
        get
        {
            return nameValue;
        }

        set
        {
            if (value != nameValue)
            {
                nameValue = value;
                NotifyPropertyChanged();
            }
        }
    }

    // This method should be called by the Set accessor of each property.
    private void NotifyPropertyChanged([CallerMemberName] String propertyName = "")
    {
        if (PropertyChanged != null)
        {
            PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
        }
    }
}

Обратите внимание, как он реализует интерфейс INotifyPropertyChanged и вызывает правильный метод всякий раз, когда устанавливается значение.В противном случае пользовательский интерфейс не будет обновляться.

Теперь, чтобы связать ваше значение, сделайте это в XAML, где-то на вашей странице: <Label Text="{Binding Name}" />.Наконец, вы должны установить свойство BindingContext вашей страницы, например так:

public MyPage : ContentPage
{
    public MyPage()
    {
        var person = new Person();
        person.Name = "Bert";

        BindingContext = person;

        person.Name = "Ernie";
    }
}

Чтобы извлечь шаблонный код и вызвать метод PropertyChanged для каждого свойства, взгляните на PropertyChanged.Fody плагин .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...