簡體   English   中英

在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從一個ViewModelPage發送到另一個

寄件人

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" ));

其他資源

Xamarin.Forms.INavigation.PushAsync方法

MessagingCenter的工作方式

所以我有一個選項卡式頁面,其中有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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM