在 AppShell FlyoutHeaderTemplate 上显示经过身份验证的用户信息
Displaying authenticated user info on AppShell FlyoutHeaderTemplate
我正在尝试创建一个弹出窗口 header,它会在 FlyoutHeaderTemplate
.
中显示经过身份验证的用户的头像和名称
我 运行 遇到的问题是 OnAppearing()
方法似乎根本没有为 AppShell
调用。我在该方法中放置了断点,但从未命中它。
我还尝试使用 ContentView
在我的弹出窗口中显示 header,但结果 ContentView
没有 OnAppearing()
或 OnDisappearing()
生命周期事件。
如何在弹出窗口中显示经过身份验证的用户信息?我的本地数据库中有用户信息。我需要做的就是:
- 可以调用
var user = await _dbService.GetUser();
读取用户信息
- 我还需要能够绑定到某些控件,即
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();
。
我正在尝试创建一个弹出窗口 header,它会在 FlyoutHeaderTemplate
.
我 运行 遇到的问题是 OnAppearing()
方法似乎根本没有为 AppShell
调用。我在该方法中放置了断点,但从未命中它。
我还尝试使用 ContentView
在我的弹出窗口中显示 header,但结果 ContentView
没有 OnAppearing()
或 OnDisappearing()
生命周期事件。
如何在弹出窗口中显示经过身份验证的用户信息?我的本地数据库中有用户信息。我需要做的就是:
- 可以调用
var user = await _dbService.GetUser();
读取用户信息 - 我还需要能够绑定到某些控件,即
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();
。