我正在创建Xamarin表单应用程序,并且正在使用Xamarin表单新的Shell模板。我创建了一个弹出菜单,并且在菜单中有一个主页(具有列表视图)和辅助页面。
将新项目添加到主页时,似乎覆盖的Onappearing()方法不起作用。除非您打开弹出菜单并打开另一个页面,否则请返回主页。然后,您将在列表视图中看到更新的列表项。
在没有弹出菜单的情况下,列表页运行良好。
我尝试了Shell.Current.Navigation.PopModalAsync();
//这是主页
protected override async void OnAppearing()
{
await _connection.CreateTableAsync<WorkOutModel>();
var workOutsList = await _connection.Table<WorkOutModel>().ToListAsync();
_workOuts = new ObservableCollection<WorkOutModel>(workOutsList.OrderBy(x => x.Date).ToList());
MyWorkOutList.ItemsSource = _workOuts;
base.OnAppearing();
}
async void Create_WorkOut_Clicked(object sender, EventArgs e)
{
if (await DisplayAlert("Warning!!", "Are you sure you want to create a new workout calendar? Current calendar will be deleted.", "Yes", "No"))
{
await _connection.DropTableAsync<WorkOutModel>();
await Shell.Current.Navigation.PushModalAsync(new CreateWorkOutCalendar());
}
}
//您发送到的页面,用于将项目添加到列表中
异步void Save_Clicked(对象发送者,EventArgs e) {
var datePicked = startDate.Date;
try
{
for (int i = 0; i < workOutList.Count; i++)
{
WorkOutModel itemsList = new WorkOutModel()
{
Title = selectedProgram,
WorkOutTitle = workOutList[i],
Date = datePicked.AddDays(i),
Notes = "",
Done = false
};
await _connection.InsertAsync(itemsList);
_workOuts.Add(itemsList);
}
await DisplayAlert("Calendar Created", $"{selectedProgram} WorkOut Calendar has been created.", "Great!");
await Navigation.PopModalAsync();
}
catch (Exception)
{
await DisplayAlert("Error", "Something went wrong! please try again", "OK");
}
}