我正在开发基于XAMLNavigation sample的简单应用。我修改了AppShell.xaml文件,以便单击设置按钮将用户导航到SettingPage。
<Button x:Name="SettingsNavPaneButton"
Grid.Row="2"
Grid.Column="2"
Style="{StaticResource SplitViewPaneButtonStyle}"
Content=""
Click="SettingsNavPaneButton_Clicked"
AutomationProperties.Name="Settings"
ToolTipService.ToolTip="Settings"/>
以下是SettingPage的内容:
<Page
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:SettlerBalancer.Views"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d">
<Grid Height="200" Width="Auto" Background="{ThemeResource ApplicationPageBackgroundThemeBrush}" Margin="24,0,0,0" HorizontalAlignment="Center" VerticalAlignment="Center">
<Grid.RowDefinitions>
<RowDefinition Height="1*"/>
<RowDefinition Height="1*"/>
<RowDefinition Height="1*"/>
</Grid.RowDefinitions>
<CheckBox x:Name="tileBalance" Grid.Row="0" Content="Text Tile" HorizontalAlignment="Left" Margin="0,0,0,-28.8" Grid.RowSpan="3" VerticalAlignment="Top" IsChecked="True" Click="tileBalance_Click"/>
<CheckBox x:Name="portBalance" Grid.Row="1" Content="Text port" HorizontalAlignment="Left" Margin="0,0,0,-28.8" Grid.RowSpan="3" VerticalAlignment="Top" IsChecked="True" Click="portBalance_Click"/>
</Grid>
在此页面中,我有2个复选框,这是我要传递给BasicPage或LandingPage的参数。
根据我的理解,您可以通过覆盖OnNavigation方法在页面之间传递参数,如this question所示。这意味着在SettingPage.xaml.cs中,我必须传递这样的参数:
Frame.Navigate(typeof(BasicPage), parameters);
Frame.Navigate(typeof(LandingPage), parameters);
但是,在我的例子中,BasicPage和LandingPage实际上不是页面,而是分割视图面板中的框架,只能通过NavigationListView访问它们。虽然SettingPage是splitview的一部分,但它不是NavigationListView的一部分。因此,从SettingPage,我不知道用户将使用NavigationListView导航时要去哪个页面(BasicPage或LandingPage)。
答案 0 :(得分:2)
您可以使用Windows.Storage.ApplicationData.Current.LocalSettings类来保存/恢复设置。您不必创建自己的设置类。 以下网址可能会对您有所帮助。
https://msdn.microsoft.com/en-us/windows/uwp/app-settings/store-and-retrieve-app-data
和
Frame.Navigate(typeof(BasicPage), parameters);
基本上,导航方法的参数适用于“导航”。目的 - 如浏览网址等 因为,导航方法具有保存/恢复导航堆栈的功能。保存/恢复应用程序设置值无用。它与&#39;导航&#39;无关。 :)
答案 1 :(得分:1)
为什么不保持简单并创建静态应用程序设置类
public static ApplicationSettings{
private static Dictionary<string,object> _settingsCache =
new Dictionary<string,object>();
public static void AddItem(string itemKey, object itemValue){
_settingsCache.add(itemKey,itemValue);
}
public static object GetItem(string itemKey){
_settingsCache[itemKey];
}
}
答案 2 :(得分:-1)
按照以下方式将参数传递给其他页面。
private void myclick(object sender,RoutedEventArgs e)
{
show s = new show() { name = name.Text, desig = desig.Text, sal = int.Parse(sal.Text) };
this.Frame.Navigate(typeof(BlankPage1), s);
}
以下代码获取目标表格的参数值
protected override void OnNavigatedTo(NavigationEventArgs e)
{
show s =(show) e.Parameter;
name.Text = "Your Name is: "+ s.name;
desig.Text = "your Designation is: "+ s.desig;
sal.Text = "Your Salary is: "+ s.sal.ToString();
}