Вы должны удалить ()
за методом Transfer
:
public class ApiViewModel : BaseViewModel
{
public bool CustomerIsChecked { get; set; }
public bool StorageIsChecked { get; set; }
public bool ArticlesIsChecked { get; set; }
public bool Transfer // <- remove ()
{
get // it should have a getter.
{
if(CustomerIsChecked == true)
{
return true;
}
return false;
}
}
public override string ToString()
{
return Transfer().ToString();
}
}
Код Transfer
может быть упрощен. Он должен возвращать истину, когда CustomerIsChecked
истинно, иначе ложно.
Итак:
public bool Transfer
{
get => CustomerIsChecked;
}
Мой старый ответ (я не понял вопроса)
Вы должны реализовать INotifyPropertyChanged и вызвать событие. Жаль, что вам нужно иметь полное свойство (добавить поле)
Поскольку вы можете вызывать событие только из самого класса, вам нужно реализовать метод для вызова события в базовом классе.
Например:
public class BaseViewModel : INotifyPropertyChanged
{
protected void RaisePropertyChanged(string propertyName) =>
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
public event PropertyChangedEventHandler PropertyChanged;
}
public class ApiViewModel : BaseViewModel
{
private bool _customerIsChecked;
public bool CustomerIsChecked
{
get { return _customerIsChecked; }
set
{
_customerIsChecked = value;
RaisePropertyChanged(nameof(CustomerIsChecked));
}
}
}
Также возможно создать вспомогательный метод, который заботится об измененном свойстве.
Мне нравится этот стиль, который позволяет новое выражение член,
public class BaseViewModel : INotifyPropertyChanged
{
public bool SetField<T>(ref T field, T value, [CallerMemberName] string memberName = "")
{
if (field != null)
{
if (field.Equals(value))
return false;
}
else if (value != null)
return false;
field = value;
RaisePropertyChanged(memberName);
return true;
}
protected void RaisePropertyChanged(string propertyName) =>
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
public event PropertyChangedEventHandler PropertyChanged;
}
public class ApiViewModel : BaseViewModel
{
private bool _customerIsChecked;
public bool CustomerIsChecked
{
get => _customerIsChecked;
set => SetField(ref _customerIsChecked, value);
}
}