мм8 дал вам идеальный ответ на ваш вопрос (настройка контекста данных) - я просто хочу указать на одну небольшую вещь, которая должна сделать вашу жизнь намного проще при создании ваших свойств.
Мы можем создать функцию для запуска события изменения свойства, требуя от вас только написать «OnPropertyChanged ()» для запуска обновления пользовательского интерфейса. Чтобы сделать это, мы добавим 'void' ниже, сказав, что он будет использовать свойство с именем «Имя участника звонящего» по умолчанию, если только вы не предоставите имя свойства вручную (IE OnPropertyChanged («SomeOtherValue»);).
Для этого нам сначала нужно добавить оператор using в верхнюю часть вашего класса UserViewModel:
using System.Runtime.CompilerServices;
Затем мы добавим код OnPropertyChanged и включим имя члена вызывающего абонента. «Это должно выглядеть так:
private void OnPropertyChanged([CallerMemberName] String name = "")
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name));
}
Теперь - мы обновим вашу собственность, чтобы использовать упрощенный метод:
public bool myValue
{
get { return _myValue; }
set
{
_myValue = value;
OnPropertyChanged();
}
}
Наконец - я лично предпочел бы упорядоченный способ получения / set's - То, что вы делаете, полностью в порядке, и нет необходимости менять его, если вы не хотите, но я бы посоветовал попробовать это так, чтобы увидеть, как вам это нравится :)
public bool MyValue
{
get => _myValue;
set
{
// If the value hasn't changed, the code will return (Exit) - avoiding a false property changed trigger :)
if (_myValue == value) return;
_myValue = value;
OnPropertyChanged();
}
}
Основания: Проверка, действительно ли значение изменилось в вашем SET, предотвратит ложные срабатывания, вы используете меньше скобок, а intellisense делает написание этого супер легким!
Дайте мне знать, если у вас есть какие-либо вопросы!