Как определить метод SetProperty
для ViewModel
в шаблоне MVVM
? Я видел в некоторых примерах, что для этого применяется интерфейс BindingBase
, который тоже надо определять.
Мне нужно также определить INotifyPropertyChanged
. Не сказать, что понимаю, но знаю, как это сделать. Видел в примерах, что от этого класса наследуют ViewModel
, а иногда имплементируют в BindingBase
(я сам запутался, так что не стоит слишком вникать в смысл этого предложения).
В данном примере необходим интерфейс INotifyPropertyChanged
, чтобы был доступен метод OnPropertyChanged()
, а также ещё какой-то интерфейс, чтобы выполнялся метод SetProperty()
:
public class MyCalendar : BaseViewModel {
// ...
private string _DayName;
public string DayName {
get { return _DayName; }
set {
_DayName = value;
OnPropertyChanged("SelectedDay");
}
}
private bool _IsWorkday;
public bool IsWorkday {
get { return _IsWorkday; }
set { SetProperty(ref _IsWorkday, value); }
}
}
Что следует добавить в класс BaseViewModel
, чтобы в классе MyCalendar
работал метод SetProperty()
?
public class BaseViewModel : INotifyPropertyChanged {
public event PropertyChangedEventHandler PropertyChanged;
public void OnPropertyChanged([CallerMemberName]string prop = "") {
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(prop));
}
}
abstract class BaseViewModel : INotifyPropertyChanged
{
protected bool SetProperty<T>(ref T field, T value, [CallerMemberName]string propertyName = null)
{
if (EqualityComparer<T>.Default.Equals(field, value))
return false;
field = value;
NotifyPropertyChanged(propertyName);
return true;
}
protected void NotifyPropertyChanged([CallerMemberName] string propertyName = null)
=> PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
public event PropertyChangedEventHandler PropertyChanged;
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Существуют ли в Java что-то вроде типов, допускающих NULL значения? То есть с сервера приходит, на пример, int, но вместо него может прийти NULL В C#можно...
ЗдравствуйтеЯ создал чат по интрукции https://metanit
Здравствуйте! Я недавно начал изучать C#Помогите, пожалуйста, поправить алгоритм
Допустим есть строка в listBox "UserFIrstName UserLastName 21993842"Как обрезать эту строку, чтобы осталось "UserFIrstName" или "UserFIrstName UserLastName"?