Je travaille avec le shell de formulaires xamarin. J'ai 1 image et 1 étiquette pour attribuer le nom et la photo de profil de l'utilisateur. Je veux à chaque fois que le menu s'ouvre (appuyez sur le bouton ou faites glisser vers la droite) pour mettre à jour cette valeur à nouveau, mais je ne trouve aucun événement associé. Quelqu'un s'il vous plaît aidez-moi mal

1
Thuận Vũ 30 oct. 2020 à 15:17

2 réponses

Meilleure réponse

Puisqu'il n'y a pas et qu'il n'y aura pas d'événements tels que OnFlyoutOpened OnFlyoutClosed, vous pouvez écouter votre événement Shell PropertyChanged, si la propriété est FlyoutIsPresented puis exécutez votre code:

public AppShell()
{
    InitializeComponent();
    PropertyChanged += Shell_PropertyChanged;
}

private void Shell_PropertyChanged(object sender, PropertyChangedEventArgs e)
{
    if (e.PropertyName.Equals("FlyoutIsPresented"))
        if (FlyoutIsPresented)
            OnFlyoutOpened();      //you will execute your code here
        else
            OnFlyoutClosed();
}

En fonction de vos besoins, vous définirez les méthodes OnFlyoutOpened() et OnFlyoutClosed().

Merci aux conseils @PureWeen dans la discussion.

0
Cfun 31 oct. 2020 à 18:12

Vous pouvez utiliser un moteur de rendu personnalisé pour obtenir l'événement lorsque vous appuyez sur l'icône de hamburger shell.

[assembly: ExportRenderer(typeof(AppShell), typeof(ShellCustomRenderer))]

namespace ShellDemo.Droid
{
public class ShellCustomRenderer : ShellRenderer
{
    public ShellCustomRenderer(Context context) : base(context)
    {

    }

    protected override IShellToolbarAppearanceTracker CreateToolbarAppearanceTracker()
    {
        return new ToolbarAppearance();
    }
}

public class ToolbarAppearance : IShellToolbarAppearanceTracker
{
    public void Dispose()
    {

    }

    public void ResetAppearance(Android.Support.V7.Widget.Toolbar toolbar, IShellToolbarTracker toolbarTracker)
    {
        toolbar.NavigationClick += Toolbar_NavigationClick1;
    }

    private void Toolbar_NavigationClick1(object sender, Android.Support.V7.Widget.Toolbar.NavigationClickEventArgs e)
    {
       //this event would be fired when the hamburger icon clicked.
    }

    private void Toolbar_NavigationClick(object sender, Android.Support.V7.Widget.Toolbar.NavigationClickEventArgs e)
    {
        
    }

    public void SetAppearance(Android.Support.V7.Widget.Toolbar toolbar, IShellToolbarTracker toolbarTracker, ShellAppearance appearance)
    {
      
    }
}

}
0
Wendy Zang - MSFT 31 oct. 2020 à 07:23