问题:
从MAUI内容页面的OnAppearing
方法中调用Maui Community Toolkit方法:ShowPopup
导致异常:System.InvalidOperationException: 'Could not locate MauiContext.'
当不在OnAppearing
方法中使用时,它似乎工作得很好。
最终目标是在页面加载数据时显示弹出窗口(带有微调器),然后在加载数据后将其删除。
Maui社区工具包版本:5.0.0安卓/毛伊岛版本:net7.0-安卓Dotnet版本:7.0
内容页:
public partial class FilesInMediaStorePage : ContentPage
{
public FilesInMediaStorePage()
{
InitializeComponent();
BindingContext = new FilesInMediaStoreViewModel();
}
protected override void OnAppearing()
{
this.ShowPopup(new SpinnerPopup()); //causes the exception: System.InvalidOperationException: 'Could not locate MauiContext.'
Task.Run(async () =>
{
this.ShowPopup(new SpinnerPopup()); //has no affect
await this.ShowPopupAsync(new SpinnerPopup()); //has no affect
});
}
private void Button_Clicked(object sender, EventArgs e)
{
this.ShowPopup(new SpinnerPopup()); //works just fine
}
}
弹出窗口:
<toolkit:Popup
x:Class="FullSail.Views.SpinnerPopup"
xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:toolkit="http://schemas.microsoft.com/dotnet/2022/maui/toolkit"
CanBeDismissedByTappingOutsideOfPopup="True"
>
<VerticalStackLayout>
<ActivityIndicator IsRunning="True" />
<Label TextColor="Red" Text="Loading..." />
<Label TextColor="Red" Text="This is a very important message!" />
<Button Text="OK"
Clicked="OnOKButtonClicked" />
</VerticalStackLayout>
</toolkit:Popup>
我尝试同时使用方法的void
和async
方法-还在Task
中调用了该方法,但没有成功。
我还寻找了一个不同的合适的基方法来覆盖,而不是OnAppearing
,但是似乎没有其他方法在页面加载上启动。
1条答案
按热度按时间l2osamch1#
不,那不起作用。您已经要求毛伊岛同时准备显示页面,并在您显示弹出窗口时阻止页面。
Task.Run
中准备所需的数据。