我想要的只是将我的输入文本从一个页面传递到另一个页面。不在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 });
谢谢。
答案 0 :(得分:1)
根据您的应用程序结构,有很多方法可以做到这一点。
如果页面已经打开,您可以使用MessagingCenter从一个ViewModel
或Page
发送到另一个
<强>发件人强>
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" ));
其他资源
答案 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);
感谢您的帮助:)