У нас есть отдельный класс Car.cs, добавленный в мое решение со следующим кодом (пример из книги), и он должен работа в двусторонней привязке в отношении элемента управления TextBox в моем приложении WPF изменяется при изменении экземпляра объекта:
Код: Выделить всё
public class Car: INotifyPropertyChanged
{
private string _make;
private string _model;
public event PropertyChangedEventHandler PropertyChanged;
public Car()
{
}
public string Make
{
get { return _make; }
set
{
if (_make != value)
{
_make = value;
OnPropertyChanged("Make");
}
}
}
public string Model
{
get { return _model; }
set
{
if(_model != value)
{
_model = value;
OnPropertyChanged("Model");
}
}
}
private void OnPropertyChanged (string propertyName)
{
if (PropertyChanged != null)
{
this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}}
Код: Выделить всё
public class Car: INotifyPropertyChanged
{
private string _make;
private string _model;
public event PropertyChangedEventHandler PropertyChanged;
public Car()
{
}
public string Make
{
get { return _make; }
set
{
_make = value;
OnPropertyChanged();
}
}
public string Model
{
get { return _model; }
set
{
_model = value;
OnPropertyChanged();
}
}
private void OnPropertyChanged ()
{
if (PropertyChanged != null)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(""));
}
} }
- Что означает эта часть? Какой смысл проверять, не равно ли свойство значению (никогда раньше не видел ничего подобного, когда во время установки свойства вы проверяете это поле класса, проверяемое на то, что оно не равно значению)? Код работает и без него. Никаких объяснений этому в книге нет. Вот рассматриваемый код:
set
{
if (_make != value)
{
_make = value;
OnPropertyChanged("Make"); - Почему, если вы будете писать имя свойства без скобок в упомянутый выше небольшой фрагмент кода (в подпункте один) тогда не получится? Я имел в виду, что если вы напишете «Make», то это не сработает, и вам следует написать «Make».
Подробнее здесь: https://stackoverflow.com/questions/747 ... d-function
Мобильная версия