AppThemeBinding für die FontImageSource-Eigenschaft für benutzerdefinierte SteuerungAndroid

Forum für diejenigen, die für Android programmieren
Guest
 AppThemeBinding für die FontImageSource-Eigenschaft für benutzerdefinierte Steuerung

Post by Guest »

Ich entwickle derzeit eine benutzerdefinierte Auswahl mit der Möglichkeit, ein Symbol hinzuzufügen.
Das benutzerdefinierte Steuerelement besteht aus:
  • Vererbung des benutzerdefinierten Steuerelements von der Picker-Klasse.
  • Benutzerdefinierter Handler, der von der PickerHandler-Klasse erbt.
Die Komponente muss über die Fähigkeit zur Verwaltung verfügen Da sich das Theme dynamisch ändert, habe ich bisher einen PropertyMapper und statische Methoden implementiert Aktualisieren Sie das zugrunde liegende Layout.
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);
}
}
Mein zweiter Versuch bestand darin, mich bei Application.Current.RequestedThemeChanged zu registrieren und OnPropertyChanged für das Quellobjekt auszulösen, falls sich die Color-Eigenschaft ändert. Beim Debuggen blieb die festgelegte Color-Eigenschaft auch nach einer Designänderung und AppThemeBinding gleich.
Im folgenden Code funktioniert AppThemeBinding wie es sollte, sodass AppThemeBinding auf FontImageSource ausgelöst werden kann UI-Änderung:

Code: Select all

 




Der Code und ein Beispielprojekt sind unter diesem Link verfügbar: github
Schritte zum Reproduzieren:
Aktualisieren Sie IconPickerPage und legen Sie FontImageSource wie folgt fest:

Code: Select all

    




Starten Sie die App, gehen Sie zu IconPicker und wechseln Sie den Dunkel-/Hellmodus. Das Symbol wird nicht neu gezeichnet.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post