C# 从Windows Phone的“设置”页面传播设置

C# 从Windows Phone的“设置”页面传播设置,c#,xaml,windows-phone-8,C#,Xaml,Windows Phone 8,我有一个Windows Phone 8.1应用程序,其中有两个页面。首先是MainPage.xaml,我在其中使用longlistselector控件来显示列表。在Settings.xaml页面上,我为使用Listpicker控件的用户选择了字体大小 问题是,一旦用户在设置页面上选择了新的字体大小,我想在主页上的longlistselector中更改字体。但是,主页上贴花的longlistselector.xaml在设置页面上不可用。(我正在MainPage.cs文件中设置longlistsel

我有一个Windows Phone 8.1应用程序,其中有两个页面。首先是MainPage.xaml,我在其中使用longlistselector控件来显示列表。在Settings.xaml页面上,我为使用Listpicker控件的用户选择了字体大小

问题是,一旦用户在设置页面上选择了新的字体大小,我想在主页上的longlistselector中更改字体。但是,主页上贴花的longlistselector.xaml在设置页面上不可用。(我正在MainPage.cs文件中设置longlistselector的itemssource。)

我应该如何解决这个问题?我是否应该使用MainPage.xaml的页面事件并检测用户是否更改了字体大小?解决这个问题的标准方法是什么

Settings.XAML中的XAML:

<TextBlock Text="Select Font" Margin="0,0,0,0"/>
            <toolkit:ListPicker Name="fontlistpicker" Tap="fonttapped" Margin="0,35,0,0" Grid.Row="0" SelectionChanged="fontlistpicker_SelectionChanged">
                <toolkit:ListPickerItem x:Name="Font1" Content="10"/>
                <toolkit:ListPickerItem x:Name="Font2" Content="20"/>
                <toolkit:ListPickerItem x:Name="Font3" Content="30"/>
                <toolkit:ListPickerItem x:Name="Font4" Content="40"/>
                <toolkit:ListPickerItem x:Name="Font5" Content="50"/>
            </toolkit:ListPicker>

MainPage.XAML中的XAML:

<phone:LongListSelector Name="myList" >
<phone:LongListSelector.ListHeader>
     <TextBlock  Name ="dailyHeader" Margin="0,0,0,10" HorizontalAlignment="Center"/>
</phone:LongListSelector.ListHeader>
</phone:LongListSelector>

当您离开Settings.xaml页面时,可以使用OnNavigatedFrom()方法将设置保存到IsolatedStorageSettings。然后在OnNavigatedTo()方法的代码隐藏中的MainPage.xaml中,可以从IsolatedStorageSettings加载该设置值,并在LongListSelector中设置字体。这就是做这件事的方法。在设置页面中,添加以下代码

protected override void OnNavigatedFrom(NavigationEventArgs e)
{
    base.OnNavigatedFrom(e);
    string key = "Font-Size";
    IsolatedStorageSettings.ApplicationSettings[key] = (fontlistpicker.SelectedItem as ListPickerItem).Content.ToString();
}
然后在MainPage.xaml.cs文件中添加以下内容

protected override void OnNavigatedTo(NavigationEventArgs e)
{
    base.OnNavigatedTo(e);
    if (IsolatedStorageSettings.ApplicationSettings.Contains("Font-Size"))
    {
        string fontSize = IsolatedStorageSettings.ApplicationSettings["Font-Size"] as string;     

        // Code to set the Font size of your LongListSelector
    }
}

你能告诉我提供的解决方案是否对你有效吗?如果是,请将其标记为正确答案:)是的,我想这个应该很好用。但我只是认为这会降低效率,因为即使设置没有改变,这个事件也会触发,而且我会更新字体,不管怎样……在我的视图中,您有另一个选项。在App.xaml.cs文件中可以有一个简单的变量或对象。因此它具有一定的应用范围。当您进入设置页面并在相应控制器中的valueChanged事件中设置值时,您可以将该值设置为App.xaml.cs中变量/对象中的所需值,然后您可以在应用程序中的任何位置访问该值。当你终止应用程序时。将该值保存到IsolatedStorageSetting。这也会对你有用。