Пользовательский элемент управления состоит из:
- наследования пользовательского элемента управления из класса Picker.
- Пользовательский обработчик, наследуемый от класса PickerHandler.
Проблема возникает со свойством 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);
}
}
В следующем коде AppThemeBinding работает должным образом, поэтому AppThemeBinding можно будет связать с FontImageSource для запуска. Изменение пользовательского интерфейса:
Код: Выделить всё
Шаги для воспроизведения:
Обновите IconPickerPage и установите FontImageSource следующим образом:
Код: Выделить всё
Подробнее здесь: https://stackoverflow.com/questions/793 ... om-control
Мобильная версия