Хотя вы не можете делать именно то, что хотите, есть несколько других подходов, которые вы можете использовать. Самый простой способ — сохранить ссылку на цвет в свойстве вашей ViewModel. Итак, вы можете сделать:
public MvxColor BackgroundColor => Colors.MainGray;
Затем вы можете привязать любой цвет к этому свойству, которое я только что создал.
Другой вариант — сделать экземпляр класса Colors вместо статического. Затем вы можете сохранить экземпляр этого класса в свойстве вашей ViewModel и привязать к его свойствам. Например, если у вас было:
public ViewModel()
{
CoreColors = new Colors();
}
public Colors CoreColors;
Затем вы можете привязать свой BackgroundColor к CoreColors.MainGray
Есть много других способов сделать это, но с вашими текущими настройками любой из этих способов будет работать отлично! Однако стоит иметь в виду, что если вы хотите обновить цвет и обновить привязку, вам нужно убедиться, что у вас есть что-то в свойстве, уведомляющее привязку о необходимости обновления. Если вы возьмете мой второй пример, вот как я настроил ваш класс Colors для поддержки этого:
public class Colors : MvxNotifyPropertyChanged
{
public static MvxColor MainGray => new MvxColor(0xff2D3030);
private MvxColor _tabBar = MainGray;
public MvxColor TabBar
{
get { return _tabBar; }
set { SetProperty(ref _tabBar, value); }
}
}
Теперь, если вы хотите привязаться к TabBar, TabBar будет MainGray, пока вы не установите цвет TabBar на что-то другое, и пользовательский интерфейс должен обновить цвет.
person
Matt Jones
schedule
11.06.2020