在Xamarin.Forms中将字符串从一个页面传递到另一个页面

时间:2018-01-16 01:30:04

标签: c# xamarin 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 });

谢谢。

2 个答案:

答案 0 :(得分:1)

根据您的应用程序结构,有很多方法可以做到这一点。

如果页面已经打开,您可以使用MessagingCenter从一个ViewModelPage发送到另一个

<强>发件人

MessagingCenter.Send<MainPage> (this, "Hi");

接收方

MessagingCenter.Subscribe<MainPage> (this, "Hi", (sender) => {
    // do something whenever the "Hi" message is sent
});

如果您要创建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 Method

How the MessagingCenter Works

答案 1 :(得分:0)

所以我有一个带有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);

感谢您的帮助:)