Das benutzerdefinierte Steuerelement besteht aus:
- Vererbung des benutzerdefinierten Steuerelements von der Picker-Klasse.
- Benutzerdefinierter Handler, der von der PickerHandler-Klasse erbt.
Es tritt ein Problem mit der Source-Eigenschaft des Typs ImageSource auf. Wenn beispielsweise eine FontImageSource als Objekt verwendet wird und AppThemeBinding auf „Color“ festgelegt ist, erfolgt die Aktualisierung nicht, wenn das Design geändert wird. Die MapSource-Methode wird nicht aufgerufen, da OnPropertyChanged nicht von der Source-Eigenschaft aufgerufen wird.
Ich habe versucht, das PropertyChanged-Ereignis wie folgt an das übergeordnete Element weiterzugeben, ohne Erfolg:
Code: Select all
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);
}
}
Im folgenden Code funktioniert AppThemeBinding wie es sollte, sodass AppThemeBinding auf FontImageSource ausgelöst werden kann UI-Änderung:
Code: Select all
Schritte zum Reproduzieren:
Aktualisieren Sie IconPickerPage und legen Sie FontImageSource wie folgt fest:
Code: Select all