我正在构建一个Windows手机应用程序,我需要一个设置页面。我想出了如何设置设置,但现在我需要知道如何从主页面阅读它们。
所以从MainPage.xaml.cs我需要在Settings.cs上检查ExitAlert是真还是假,我无法弄清楚如何。我确信这很简单。
感谢。
答案 0 :(得分:2)
通常在Windows中临时设置(对于特定实例)存储在“PhoneApplicationService.Current.State”中 永久设置将存储在“System.IO.IsolatedStorage.IsolatedStorageSettings.ApplicationSettings”
中根据您的查询
您可以将值存储在设置页面中,如下所示
if(PhoneApplicationService.Current.State.Contains("ExitAlert"))
PhoneApplicationService.Current.State["ExitAlert"] = value;
else
PhoneApplicationService.Current.State.Add("ExitAlert", value);
您可以从主页面访问该值,如下所示
if(PhoneApplicationService.Current.State.Contains("ExitAlert"))
value = (bool)PhoneApplicationService.Current.State["ExitAlert"];
if(value == true)
Messagebox.Show("Exit alert is set");
希望它能解决你的问题。
答案 1 :(得分:0)
要在应用程序实例中的页面之间共享值,请将值添加到生成页面中的应用程序资源,并从另一个资源中获取值。
以下是我经常使用的一些帮助方法,它们说明了如何使用应用程序资源。
public static T GetResource<T>( object key ) where T : class
{
return Application.Current.Resources[ key ] as T;
}
public static T GetResourceValueType<T>( object key ) where T : struct
{
object value = Application.Current.Resources[ key ];
return (value != null)
? (T)value
: new T();
}
public static void SetResource( object key, object resource )
{
if ( Application.Current.Resources.Contains( key ) )
Application.Current.Resources.Remove( key );
Application.Current.Resources.Add( key, resource );
}
请注意,SetResource解决了以下事实:一旦设置了应用程序资源,就无法更改它的值,因此它会删除旧资源,然后添加一个新资源。 GetResource和GetResourceValueType之间的区别在于类型是CLR资源类型(即类)还是CLR值类型(即结构,如int或bool)。
对于您的示例,您可以像这样使用它们:
bool exitAlert_Page1 = true;
SetResource( "ExitAlert", exitAlert );
// elsewhere...
bool exitAlert_Page2 = GetResourceValueType<bool>( "ExitAlert" );
我通常使用这些辅助方法来实现C#属性的get和set方法,即使用的'key'值仅限于属性定义。
更新:由于之前出现过这种情况,我在博文http://www.visualstuart.net/blog2/2011/11/sharing-values-across-wp7-pages/中将其包含在内,并提供了一些小改进和可下载的代码。享受!的