![](/img/trans.png)
[英]How to pass a parameter from one Page to another Page in Xamarin.Forms?
[英]Passing a string from one page to another in Xamarin.Forms
我想要的只是將我的輸入文本從一頁傳遞到另一頁。 不是在Xaml
而是在.cs
文件中。
第一頁代碼
<Label Text="Username" TextColor="Gold" FontSize="Small"/>
<Entry Placeholder="Username" TextColor="White" x:Name="Username"/>
Username.Text
將用於文本。 我希望在第二頁上顯示此文本。
我想要此Username.Text
第二頁
sqlcmd.CommandText = queryString;
sqlcmd.Parameters.AddWithValue("@n", {I want Username.Text here });
謝謝。
有多種方法可以執行此操作,具體取決於您的應用程序結構。
如果頁面已經打開,則可以使用MessagingCenter從一個ViewModel
或Page
發送到另一個
寄件人
MessagingCenter.Send<MainPage> (this, "Hi");
接收器
MessagingCenter.Subscribe<MainPage> (this, "Hi", (sender) => {
// do something whenever the "Hi" message is sent
});
如果要創建Page
,則可以通過Page Constructor
傳遞文本,
新頁面構造器
public MyPage(string someText)
{
}
寄件人
await Navigation.PushAsync(new NavigationPage(new MyPage(<YourTextHere>)));
或通過Property
await Navigation.PushAsync(new NavigationPage(new MyPage() { SomneProperty = "blach" ));
其他資源
所以我有一個選項卡式頁面,其中有5頁。 我所做的就是這個。
這樣傳遞了我的Username.Text
Navigation.PushModalAsync(new Overview(Username.Text));
然后像這樣在“概述”頁面中對其進行檢索。
public string str = null;
public Overview (string g)
{
str = g;
this.Children.Add(new Home()
{
Title = "Home",
Icon = "",
});
this.Children.Add(new EarnPoints(str)
{
Title = "Earn More",
Icon = "",
});
最后,在我的EarnPoints頁面中,我做到了。
public string sts = null;
public EarnPoints (string g)
{
InitializeComponent ();
sts = g;
GetAccountCountFromMySQL();
}
public void GetAccountCountFromMySQL()
{
try
{
MySqlConnection sqlconn;
string connsqlstring = "Server=lightningstorerewards.com;database=sukree_dzgpt;User Id=sukree_gptuser;Password=kgausi9nMNzX;charset=utf8";
sqlconn = new MySqlConnection(connsqlstring);
sqlconn.Open();
string queryString = "SELECT points FROM users WHERE username = @n";
MySqlCommand sqlcmd = new MySqlCommand(queryString, sqlconn);
sqlcmd.CommandText = queryString;
sqlcmd.Parameters.AddWithValue("@n", sts);
感謝你的幫助 :)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.