AppThemeBinding для свойства FontImageSource для настраиваемого элемента управления ⇐ Android

Форум для тех, кто программирует под Android
Anonymous
AppThemeBinding для свойства FontImageSource для настраиваемого элемента управления

Сообщение Anonymous »

В настоящее время я разрабатываю пользовательский элемент выбора с возможностью добавления значка.
Пользовательский элемент управления состоит из:
  • наследования пользовательского элемента управления из класса Picker.
  • Пользовательский обработчик, наследуемый от класса PickerHandler.
Компонент должен иметь возможность управлять тема меняется динамически, до сих пор я реализовал PropertyMapper и статические методы для обновления базового макета.
Проблема возникает со свойством Source типа ImageSource: при использовании FontImageSource в качестве объекта с AppThemeBinding, установленным для Color, например, обновление не происходит. возникают при смене темы. метод MapSource не вызывается, поскольку OnPropertyChanged не вызывается свойством Source.
Я безуспешно пытался передать событие PropertyChanged родительскому элементу, как показано ниже:

Код: Выделить всё

public static readonly BindableProperty SourceProperty = BindableProperty.Create(nameof(Source), typeof(ImageSource), typeof(IconPicker), defaultValue: default(ImageSource));

public ImageSource Source
{
get => (ImageSource)GetValue(SourceProperty);
set
{
value.PropertyChanged += (s, e) => OnPropertyChanged(nameof(Source));
SetValue(SourceProperty, value);
}
}
Моя вторая попытка состояла в том, чтобы зарегистрироваться в Application.Current.RequestedThemeChanged и вызвать OnPropertyChanged для объекта Source в случае изменения свойства Color. При отладке даже после изменения темы и AppThemeBinding установленное свойство Color осталось прежним.
В следующем коде AppThemeBinding работает должным образом, поэтому AppThemeBinding можно будет связать с FontImageSource для запуска. Изменение пользовательского интерфейса: Код и пример проекта доступны по этой ссылке: github.
Шаги для воспроизведения:
Обновите IconPickerPage и установите FontImageSource следующим образом: Запустите приложение, перейдите в IconPicker и переключите темный/светлый режим, значок не перерисовывается.

Подробнее здесь: https://stackoverflow.com/questions/793 ... om-control

Вернуться в «Android»