Windows Store App XAML - Как получить значение текстового поля из page.i имеет для судоходства 2 страницы 1.MainPage.xaml 2.Infopage.xaml в MainPage У меня есть кнопка (чтобы получить значение TextBox InfoPage) и фрейм (для навигации по InfoPage). в InfoPage есть некоторые текстовые поля. Теперь как я могу получить значения InfoBage TextBoxWindows Store App XAML - Как получить значение текстового поля на странице
ответ
В дополнение к решению Нила, вот еще два способа, которыми вы также можете ссылаться.
Один из способов - определить статический параметр на infoPage
и установить значение текущей страницы. Затем вы можете вызвать метод на infoPage
от MainPage
. Код нравится следующим образом:
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
пожалуйста, ссылку на official sample.
Другой способ сохранить текст временно в ApplicationData.LocalSettings по адресу infoPage
и прочитать текст на 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
. Более подробную информацию о MVVM в uwp вы можете указать this article.
Самый простой способ - хранить значение из InfoPage для глобальной переменной внутри объекта App, а затем получить его в MainPage.
В App.xaml.cs, определить строку или список,
public string commonValue;
В Инфостранице
<StackPanel Orientation="Vertical" VerticalAlignment="Center" Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<TextBox Name="tb1" Text="Hello"/>
В Инфостранице коде позади, мы сохраняем значение текстового поля к приложение.
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 позади, мы должны инициализировать Инфостраница затем получить значение:
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;
}
}
ничего себе!моя проблема решена путем этого Код первой страницы: public static FormFillPersonalinfo Current; public FormFillPersonalinfo() { this.InitializeComponent(); Current = this; } public string ffptitle() { return (Title.SelectedItem as FlipViewItem) .Content.ToString(); } public string ffpfirstname() { return FirstName.Text; } –
второй кодовой страницы: частное аннулируются AppBarButton_Click (объект отправителя, RoutedEventArgs е) { mm.Text = FormFillPersonalinfo.Current.ffpbirthday(); } –