在 AppShell FlyoutHeaderTemplate 上显示经过身份验证的用户信息

Displaying authenticated user info on AppShell FlyoutHeaderTemplate

我正在尝试创建一个弹出窗口 header,它会在 FlyoutHeaderTemplate.

中显示经过身份验证的用户的头像和名称

我 运行 遇到的问题是 OnAppearing() 方法似乎根本没有为 AppShell 调用。我在该方法中放置了断点,但从未命中它。

我还尝试使用 ContentView 在我的弹出窗口中显示 header,但结果 ContentView 没有 OnAppearing()OnDisappearing() 生命周期事件。

如何在弹出窗口中显示经过身份验证的用户信息?我的本地数据库中有用户信息。我需要做的就是:

  1. 可以调用var user = await _dbService.GetUser();读取用户信息
  2. 我还需要能够绑定到某些控件,即 Label 用户名和 Avatar 用户图像。

这是我 AppShell 中的内容:

<Shell.FlyoutHeaderTemplate>
   <DataTemplate>
      <StackLayout>
         <Label Text="{Binding ???}"/>
      </StackLayout>
   </DataTemplate>
</Shell.FlyoutHeaderTemplate>

第一次 运行 Appshell 它将触发构造函数,因此您可以在构造函数中调用 var user = await _dbService.GetUser();。然后将 shell 绑定到自身 this.BindingContext = this;。添加字符串 属性 以将其绑定到 xaml.

中的文本标签
private string name;
public string Name { get{return name;} set { SetProperty(ref name, value); } 

public AppShell()
{
  InitializeComponent();
   Task.Run(async () =>
                    {
                        await GetUser();
                    });
  this.BindingContext = this;
}

public async void GetUser(){
  var user = await _dbService.GetUser();  
  Name = user.Name; 
}

只要你去 await Shell.Current.GoToAsync("..");OnAppearing() 就会命中。所以你也可以在其中调用var user = await _dbService.GetUser();