以 xamarin 形式打开左侧菜单时的事件 shell
event when the left menu is opened in xamarin forms shell
我正在使用 xamarin 表单 shell。我有 1 张图像和 1 个标签来分配用户的姓名和个人资料图片。
我希望每次打开菜单(按下按钮或向右拖动)时再次更新该值,但我找不到与之相关的任何事件。有人请帮帮我
您可以使用自定义渲染器在您按下 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)
{
}
}
}
由于没有也不会发生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 在discussion 中的指导。
我正在使用 xamarin 表单 shell。我有 1 张图像和 1 个标签来分配用户的姓名和个人资料图片。 我希望每次打开菜单(按下按钮或向右拖动)时再次更新该值,但我找不到与之相关的任何事件。有人请帮帮我
您可以使用自定义渲染器在您按下 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)
{
}
}
}
由于没有也不会发生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 在discussion 中的指导。