Я проверил, что ошибок привязки XAML нет, и есть нет ошибок привязки в приложении. Кажется, с точки зрения привязки все в порядке, но список участников не отображается должным образом после перехода к сведениям об участнике.
Ожидаемое поведение:
Когда я выбираю участника, я ожидаю, что будет отображен список участников, связанных с этим участником.
Фактическое поведение:
Список участников не отображается, хотя Я могу создавать, обновлять и удалять членство для участника. Однако после выбора участника членство в списке не отображается.
Что я пробовал:
- Я проверил XAML на наличие проблем с привязкой, сбоев привязки нет.
- Я убедился, что данные правильно извлекаются из базы данных для членства и участников.
- Я рассмотрел код, настраивающий BindingContext для обоих членов. и членство.
- Я подтвердил, что операции базы данных по сохранению и извлечению членства работают правильно.
- Членство правильно сохраняется и извлекается , но ListView не обновляет и не отображает список членства для выбранного члена.
using SQLite;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using SQLiteNetExtensions.Attributes;
'This is the ListPage.xaml the page that doesn't work'
I will put the ListPage.xaml.cs
using YourAppNamespace.Models;
namespace YourAppNamespace;
public partial class ListPage : ContentPage
{
public ListPage(Member member = null)
{
InitializeComponent();
BindingContext = member ?? new Member();
}
async void OnSaveButtonClicked(object sender, EventArgs e)
{
var member = (Member)BindingContext;
if (string.IsNullOrWhiteSpace(member.FirstName) || string.IsNullOrWhiteSpace(member.LastName))
{
await DisplayAlert("Error", "First and Last name are required", "OK");
return;
}
await App.Database.SaveMemberAsync(member);
await Navigation.PopAsync();
}
async void OnDeleteButtonClicked(object sender, EventArgs e)
{
var member = (Member)BindingContext;
await App.Database.DeleteMemberAsync(member);
await Navigation.PopAsync();
}
async void OnChooseButtonClicked(object sender, EventArgs e)
{
var member = BindingContext as Member;
if (member != null)
{
var membershipPage = new MembershipPage(new Membership());
await Navigation.PushAsync(membershipPage);
membershipPage.Disappearing += async (s, args) =>
{
if (membershipPage.SelectedMembership != null)
{
member.MembershipID = membershipPage.SelectedMembership.ID;
await App.Database.SaveMemberAsync(member);
var membership = await App.Database.GetMemberMembershipsAsync(member.MembershipID);
await DisplayAlert("Success", "Membership has been associated with the member.", "OK");
}
};
}
else
{
await DisplayAlert("Error", "BindingContext is not set as Member.", "OK");
}
}
protected override async void OnAppearing()
{
base.OnAppearing();
if (BindingContext is Member member)
{
listView.ItemsSource = await App.Database.GetMemberMembershipsAsync(member.ID);
}
else
{
await DisplayAlert("Error", "BindingContext is not set to a Member.", "OK");
}
}
}
This is the MembershipPage.xaml.cs
using YourAppNamespace.Models;
namespace YourAppNamespace;
public partial class MembershipPage : ContentPage
{
public Membership SelectedMembership { get; set; }
public MembershipPage(Membership membership = null)
{
InitializeComponent();
BindingContext = membership ?? new Membership();
}
async void OnSaveButtonClicked(object sender, EventArgs e)
{
if (BindingContext is Membership membership)
{
await App.Database.SaveMembershipAsync(membership);
listView.ItemsSource = await App.Database.GetMembershipsAsync();
}
else
{
await DisplayAlert("Error", "BindingContext is not set to a Membership.", "OK");
}
}
async void OnDeleteButtonClicked(object sender, EventArgs e)
{
var membership = listView.SelectedItem as Membership;
await App.Database.DeleteMembershipAsync(membership);
listView.ItemsSource = await App.Database.GetMembershipsAsync();
}
protected override async void OnAppearing()
{
base.OnAppearing();
listView.ItemsSource = await App.Database.GetMembershipsAsync();
}
async void OnAddButtonClicked(object sender, EventArgs e)
{
if (listView.SelectedItem is Membership selectedMembership)
{
var member = new Member();
await App.Database.SaveMemberAsync(member);
selectedMembership.Members ??= new List();
selectedMembership.Members.Add(member);
await DisplayAlert("Success", "Member added successfully", "OK");
await Navigation.PopAsync();
}
else
{
await DisplayAlert("Error", "Please select a membership before adding a member.", "OK");
}
}
}
Подробнее здесь: https://stackoverflow.com/questions/793 ... s-not-work
Мобильная версия