【问题标题】:event when the left menu is opened in xamarin forms shell在 xamarin 表单 shell 中打开左侧菜单时的事件
【发布时间】:2020-10-30 12:17:37
【问题描述】:

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

【问题讨论】:

    标签: c# xamarin xamarin.forms xamarin.forms.shell


    【解决方案1】:

    由于没有也不会有OnFlyoutOpenedOnFlyoutClosed这样的事件,你可以监听你的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 在discussion 中的指导。

    【讨论】:

    • 谢谢。我也采纳了。它看起来工作正常
    【解决方案2】:

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

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

    【讨论】:

    • 目前,我找不到捕获拖动到正确事件的方法。我会继续测试。
    • 我不太想使用自定义渲染器。但是非常感谢你给我一个很好的解决方案
    猜你喜欢
    • 1970-01-01
    • 2016-06-26
    • 1970-01-01
    • 2017-03-27
    • 2017-01-26
    • 1970-01-01
    • 2013-01-27
    • 1970-01-01
    • 2016-06-20
    相关资源
    最近更新 更多