Почему моя привязка в .NET Maui не работает?C#

Место общения программистов C#
Ответить
Anonymous
 Почему моя привязка в .NET Maui не работает?

Сообщение Anonymous »

Я работаю над приложением .NET MAUI, которое управляет участниками и членством. Я могу выполнять операции CRUD над участниками (добавлять, удалять, просматривать и обновлять), а также управлять членством (создавать, удалять, просматривать). Однако я столкнулся с проблемой при попытке добавить членство к участнику. Проблема возникает, когда я ввожу данные участника и ожидаю увидеть список связанных с ним членств, но членство не отображается.
Я проверил, что ошибок привязки XAML нет, и есть нет ошибок привязки в приложении. Кажется, с точки зрения привязки все в порядке, но список участников не отображается должным образом после перехода к сведениям об участнике.
Ожидаемое поведение:
Когда я выбираю участника, я ожидаю, что будет отображен список участников, связанных с этим участником.
Фактическое поведение:
Список участников не отображается, хотя Я могу создавать, обновлять и удалять членство для участника. Однако после выбора участника членство в списке не отображается.
Я провел небольшое исследование, когда пытался выполнить отладку метода GetMemberMembershipsAsync. значение счетчика отображается как 0. Это указывает на то, что данные из базы данных не извлекаются, хотя я ожидаю, что она вернет результаты. Таким образом, членство не создается.
Этот метод не работает:
````
public Task GetMemberMembershipsAsync(int memberid)
{

return _database.QueryAsync(
"SELECT membership.ID, membership.MembershipName FROM Membership membership " +
"INNER JOIN Member M ON M.MembershipID = membership.ID " +
"WHERE M.ID = ?", memberid);

}
````

Я помещу 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");
}
}
}

````
````

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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»