[英]Override the back navigation (gestures, buttons) for certain pages in .NET MAUI
[英]Navigation issue of moving between content pages .NET MAUI for 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()));
}
}
因此,重申一下,問題在於通過單擊按鈕在一頁與另一頁之間導航,這似乎正在觸發,並且驗證的模式替代方案按預期工作,但是當找到正確的詳細信息時,它不會觸發新的頁面如預期:( 我知道我錯過了那個 obvs,但我對這個環境還很陌生,所以很高興知道我遇到了什么問題,這樣我就可以把它放到愚蠢的陷阱框中. 再次感謝任何讀到這里並能提供幫助的人。(下面是該項目的副本,以防我所說的內容在沒有正確查看的情況下不容易破譯)
所以看起來我是個徹頭徹尾的白痴,並沒有更改 App.xaml.cs 來調用 MainPage() 的應用程序入口上的導航頁面
我真是個笨手笨腳的人,但我猜這是因為沒有規律的休息,並且迷失在這一切中 doh。 我必須感謝@ToolMakerSteve 對 APp.xaml 的點頭,因為當我到達那里時,我注意到它不在導航頁面設置中
曾是...
MainPage = new MainPage();
現在...
MainPage = new NavigationPage( new MainPage());
這解決了這個問題 [有點我的理智,感謝你作為音板 Stackoverflow 和貢獻者在那里] 當然它表明我的驗證很糟糕,因為任何密碼和任何用戶名組合現在都可以進入下一個視圖,哈哈所以現在需要正確控制那個:)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.