Windows商店应用程序XAML -如何获得导航页面的文本框值
本文关键字:文本 导航 何获得 应用程序 XAML Windows | 更新日期: 2023-09-27 18:13:38
Windows Store App XAML -如何获取导航页面的文本框值我有两页纸1. mainpage.xaml2. infopage.xaml在MainPage我有一个按钮(获取infpage的文本框值)和框架(浏览infpage)..在infpage有一些文本框..现在我怎么得到infpage文本框值
除了Neal的解决方案,这里还有另外两种方法可供参考。
一种方法是在infoPage
上定义一个静态参数,并将其值设置为当前页面。然后可以从MainPage
调用infoPage
上的方法。代码如下:
infoPage
public static InfoPage Current;
public InfoPage()
{
this.InitializeComponent();
Current = this;
}
public string gettext()
{
return txttext.Text;
}
MainPage
private void btngetsecondpage_Click(object sender, RoutedEventArgs e)
{
InfoPage infopage = InfoPage.Current;
txtresult.Text = infopage.gettext();
}
关于ApplicationData
的更多细节请参考官方示例。
另一种方法是将文本临时保存在ApplicationData中。infoPage
上的LocalSettings,并在MainPage
上读取文本。代码如下:
infoPage
private void txttext_TextChanged(object sender, TextChangedEventArgs e)
{
ApplicationDataContainer localSettings = ApplicationData.Current.LocalSettings;
localSettings.Values["texboxtext"] =txttext.Text; // example value
}
MainPage
private void btngetsecondpage_Click(object sender, RoutedEventArgs e)
{
ApplicationDataContainer localSettings = ApplicationData.Current.LocalSettings;
if (localSettings.Values["texboxtext"] != null)
{
txtresult.Text = localSettings.Values["texboxtext"].ToString();
}
}
如果你有大量的数据,一个更好的方法是创建一个本地文件作为数据库,并使用MVVM模式将数据从infoPage
写入本地文件,并将保存在数据库中的数据绑定到MainPage
。关于uwp中MVVM的更多细节可以参考本文
最简单的方法是将infpage中的值存储到App对象中的全局变量中,然后在MainPage中检索它。
在app. example .cs中,定义一个字符串或列表,
public string commonValue;
在infpage
<StackPanel Orientation="Vertical" VerticalAlignment="Center" Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<TextBox Name="tb1" Text="Hello"/>
在后面的infpage代码中,我们将textbox的值存储到应用程序中。
public InfoPage()
{
this.InitializeComponent();
App app = Application.Current as App;
app.commonValue = tb1.Text;
}
然后在MainPage:
<StackPanel VerticalAlignment="Center" Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<Button Content="MainPage" Click="Button_Click"/>
<TextBox Name="textbox1"/>
在MainPage代码后面,我们需要初始化infpage,然后检索值:
public sealed partial class MainPage : Page
{
public MainPage()
{
this.InitializeComponent();
InfoPage info = new InfoPage();
info.InitializeComponent();
}
private void Button_Click(object sender, RoutedEventArgs e)
{
App app = Application.Current as App;
textbox1.Text = app.commonValue;
}
}