У меня есть MainPage с кодом для моего NavigationView.MainPage переходит на страницы с помощью frame.navigate ().Одна из страниц содержит текстовые поля для введенных пользователем данных.Я хотел бы взять эти введенные данные и использовать их для изменения того, что отображается на другой странице.
Я просмотрел здесь много похожих сообщений о передаче данных из одного представления в другое, и все онииспользуйте frame.navigate (typeof (page), параметр).Но мои параметры не находятся на главной странице, где у меня есть элементы управления навигацией.
MainPage.xaml
<Page>
<Grid>
<NavigationView x:Name="nvTopLevelNav">
<NavigationView.MenuItems>
<NavigationViewItem Icon="Setting" Content="Page1" Tag="Page1" />
<NavigationViewItem Icon="Rotate" Content="Page2" Tag="Page2" />
</NavigationView.MenuItems>
<Frame x:Name="contentFrame"></Frame>
</NavigationView>
</Grid>
</Page>
MainPage.xaml.cs:
namespace App
{
public sealed partial class MainPage : Page
{
public MainPage()
{
this.InitializeComponent();
}
#region NavigationView event handlers
private void nvTopLevelNav_Loaded(object sender, RoutedEventArgs e)
{
// set the initial SelectedItem
foreach (NavigationViewItemBase item in nvTopLevelNav.MenuItems)
{
if (item is NavigationViewItem && item.Tag.ToString()=="Page1")
{
nvTopLevelNav.SelectedItem = item;
break;
}
}
}
private void nvTopLevelNav_SelectionChanged(NavigationView sender, NavigationViewSelectionChangedEventArgs args)
{
Windows.UI.Xaml.Controls.NavigationViewItem Item = args.SelectedItem as Windows.UI.Xaml.Controls.NavigationViewItem;
if (Item.Tag is string ItemTag)
{
switch (ItemTag)
{
case "Page1":
contentFrame.Navigate(typeof(SettingsPage));
sender.Header = "Page1";
break;
case "Page2":
contentFrame.Navigate(typeof(Page2));
sender.Header = "Page2";
break;
}
}
}
}
}
Page1.xaml
<Page>
<Grid>
<Button Name="OutputFolderButton" Click="OutputFolderButtonClick">
<Image x:Name="FileButton" Source="Assets/FileButton.png"/>
</Button>
<ToggleSwitch Name="ToggleSwitch" Toggled="SwitchToggled"/>
<TextBox Name="TextBox1" TextChanged="TextBox1Changed"/>
<TextBox Name="TextBox2" TextChanged="TextBox2Changed"/>
<TextBox Name="TextBox3" TextChanged="TextBox3Changed"/>
<TextBox Name="TextBox4" TextChanged="TextBox4Changed"/>
</Grid>
</Page>
Page1.xaml.cs:
namespace App
{
public sealed partial class SettingsPage : Page
{
public SettingsPage()
{
InitializeComponent();
}
protected override void OnNavigatedTo(NavigationEventArgs e)
{
base.OnNavigatedTo(e);
}
public async void OutputFolderButtonClick(object sender, RoutedEventArgs e)
{
var picker = new Windows.Storage.Pickers.FolderPicker
{
SuggestedStartLocation = Windows.Storage.Pickers.PickerLocationId.ComputerFolder
};
picker.FileTypeFilter.Add("*");
Windows.Storage.StorageFolder outputFolder = await picker.PickSingleFolderAsync();
if (outputFolder != null)
{
OutputFolderTextBox.Text = outputFolder.Path;
OutputFolderTextBox.FontStyle = Windows.UI.Text.FontStyle.Normal;
}
}
private void SwitchToggled(object sender, RoutedEventArgs e)
{
}
private void TextBox1Changed(object sender, TextChangedEventArgs e)
{
}
private void TextBox2Changed(object sender, TextChangedEventArgs e)
{
}
private void TextBox3Changed(object sender, TextChangedEventArgs e)
{
}
private void TextBox4Changed(object sender, TextChangedEventArgs e)
{
}
}
}
Я бы хотел, чтобы события TextChanged передавали данные в MainPage, чтобы все даты были доступны в однойместо.Со всеми данными в MainPage, я могу передать их на другие страницы, как они называются.