Проблема навигации при перемещении между страницами контента .NET MAUI для Android
Привет и спасибо, что прочитали заранее... У меня есть проект, предназначенный для создания системы бронирования клиентов для байдарочной компании, и я создал начальную страницу входа в систему, которая работает для всех целей и задач в отношении проверки, но когда я нажимаю кнопку входа кнопка [и детали кажутся проверенными, она не переходит на следующую страницу контента [просмотр]. Я прикрепил ссылку на видео, показывающую проблему на практике, но я был бы признателен за помощь в обнаружении того, какую глупость я пропустил, поскольку я занимался этим всю ночь и сегодня и думаю, что немного ослеп, чтобы увидеть очевидный!?Запись экрана проблемы с навигацией
private void BtnLogin_Clicked(object sender, EventArgs e)
{
//shifty debug
btnLogin.Text = "click received...";
string user = entUsername.Text;
string pass = entPassword.Text;
string[] users = new string[result.Members.Length];
string[] passes = new string[result.Members.Length];
for (int i = 0; i < result.Members.Length; i++)
{
users[i] = result.Members[i].Usr;
users[i] = result.Members[i].Pass;
}
if (user == string.Empty || pass == string.Empty)
{
InputError($"User: {user}\nPass: {pass}\n Nothing was entered in one of the text fields");
}
else
{
switch (user)
{
case "gruff":
case "kieran":
case "zara":
{
NextPage();
break;
}
default:
InputError($"User: {user}\nPass: {pass}\n Not a correct user and/or password");
break;
}
}
}
private void InputError(string v)
{
Navigation.PushModalAsync(new InfoModal(v));
}
private void NextPage()
{
btnLogin.Text = "At NextPage Method caledl";
//so after a number of attempts to show a modal or next page
//some success with modal above, but possibly hangs after... i think
//no success with content page change: the start for tomrorrow :/
Navigation.PushAsync((new ClientMainPage()));
}
Ниже приведен весь лист кода для большей ясности, но это код выше, который запущен и дает мой сомнительный результат, я думаю :(
public partial class MainPage : ContentPage
{
//simple admin cover fr viewing xml data
private const string admin = "123";
private bool revealState = true;
private System.Xml.Serialization.XmlSerializer serializer;
private XmlMemberData result;
public MainPage()
{
InitializeComponent();
GetMembers();
}
private async void GetMembers()
{
await using var stream = await FileSystem.OpenAppPackageFileAsync("Members.xml");
serializer = new System.Xml.Serialization.XmlSerializer(typeof(XmlMemberData));
result = (XmlMemberData)serializer.Deserialize(stream);
IEnumerable<Member> members = result?.Members.ToList();
}
private void BtnMembersCheck_Clicked(object sender, EventArgs e)
{
if(revealState)
{
string adminKey = entAdminKey.Text;
if (adminKey != admin)
{
adminKey = "";
entAdminKey.Text = string.Empty;
//pop up a modal warning? - UX
return;
}
var members = result?.Members.ToList();
switch (members?.Count)
{
case 0:
StatusLabel.Text = "None Found, Are you sure you created any users?";
break;
case > 0:
StatusLabel.Text = $"{members.Count} Members Loaded!";
BooksListControl.ItemsSource = members;
btnMembersCheck.Text = "ClearData";
revealState = !revealState;
break;
default:
StatusLabel.Text = "Something went wrong";
break;
}
}
else
{
StatusLabel.Text = "To View Again Re-Enter Admin Key";
entAdminKey.Text = string.Empty;
btnMembersCheck.Text = "Reload Admin Keys";
BooksListControl.ItemsSource = null;
revealState = !revealState;
return;
}
}
private void BtnLogin_Clicked(object sender, EventArgs e)
{
//shifty debug
btnLogin.Text = "click received...";
string user = entUsername.Text;
string pass = entPassword.Text;
string[] users = new string[result.Members.Length];
string[] passes = new string[result.Members.Length];
for (int i = 0; i < result.Members.Length; i++)
{
users[i] = result.Members[i].Usr;
users[i] = result.Members[i].Pass;
}
if (user == string.Empty || pass == string.Empty)
{
InputError($"User: {user}\nPass: {pass}\n Nothing was entered in one of the text fields");
}
else
{
switch (user)
{
case "gruff":
case "kieran":
case "zara":
{
NextPage();
break;
}
default:
InputError($"User: {user}\nPass: {pass}\n Not a correct user and/or password");
break;
}
}
}
private void InputError(string v)
{
Navigation.PushModalAsync(new InfoModal(v));
}
private void NextPage()
{
btnLogin.Text = "At NextPage Method caledl";
//so after a number of attempts to show a modal or next page
//some success with modal above, but possibly hangs after... i think
//no success with content page change: the start for tomrorrow :/
Navigation.PushAsync((new ClientMainPage()));
}
}
Итак, повторюсь, проблема заключается в переходе между одной страницей на другую по нажатию кнопки, которая, кажется, срабатывает, и модальная альтернатива для проверки работает, как ожидалось, но когда найдены правильные данные, он не запускает новый страница, как и ожидалось :( Я знаю, что мне не хватает этого наблюдателя, но я довольно новичок в этой среде, поэтому было бы здорово узнать, на что я наткнулся, чтобы я мог поместить это в ящик глупых ошибок , Еще раз большое спасибо всем, кто дочитал до этого места и может помочь (ниже приведена копия проекта на случай, если то, что я сказал, не так просто расшифровать без должного взгляда).
1 ответ
Так что похоже, что я был полным идиотом и НЕ изменил App.xaml.cs, чтобы вызвать страницу навигации в записи приложения для MainPage()
Я такой неуклюжий, но думаю, это из-за того, что я не делаю регулярных перерывов и теряюсь во всем этом, черт возьми. Я должен поблагодарить @ToolMakerSteve за его кивок в сторону APp.xaml, так как, когда я добрался туда, я заметил, что его нет в настройках страницы навигации.
был...
MainPage = new MainPage();
в настоящее время...
MainPage = new NavigationPage( new MainPage());
ЭТО РЕШЕНО, ИМЕЕТ ЭТУ ПРОБЛЕМУ [и отчасти мое здравомыслие, спасибо за то, что вы были там в качестве звуковой панели Stackoverflow и участников] Конечно, это показало, что моя проверка отстой, поскольку любой пароль и любая комбинация имени пользователя могут перейти к следующему представлению сейчас, лол, так что теперь нужно правильно контролируй это :)