1

我正在使用 xamarin 表单外壳。我有 1 个图像和 1 个标签来分配用户的姓名和个人资料图片。我希望每次菜单打开时(按下按钮或向右拖动)再次更新该值,但我找不到任何与之相关的事件。有人请帮帮我

4

2 回答 2

3

由于没有也不会发生此类事件OnFlyoutOpened OnFlyoutClosed,因此您可以收听您的 ShellPropertyChanged事件,如果该属性是FlyoutIsPresented则执行您的代码:

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();
}

根据您的要求,您将定义OnFlyoutOpened()OnFlyoutClosed()方法。

感谢@PureWeen 在讨论中的指导。

于 2020-10-31T18:00:45.883 回答
0

当您按下外壳汉堡图标时,您可以使用自定义渲染器来获取事件。

[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)
    {
      
    }
}

}
于 2020-10-31T07:23:44.280 回答