Чтение набора переменных на другой странице - PullRequest
2 голосов
/ 11 ноября 2011

Я создаю приложение для Windows Phone, и мне нужна страница настроек. Я разобрался, как установить настройки, но теперь мне нужно знать, как их читать с главной страницы.

Итак, из MainPage.xaml.cs мне нужно проверить, является ли ExitAlert истинным или ложным на Settings.cs, и я не могу понять, как это сделать. Я уверен, что это что-то простое.

Спасибо.

Ответы [ 2 ]

2 голосов
/ 11 ноября 2011

Обычно в 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");

Надеюсь, это решит вашу проблему.

0 голосов
/ 11 ноября 2011

Для совместного использования значения между страницами в экземпляре приложения добавьте значение к ресурсам приложения на производящей странице и получите значение из ресурса в другой.

Вот некоторые вспомогательные методы, которые я часто использую, которые иллюстрируют, как использовать ресурсы приложения.

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" );

Обычно я использую эти вспомогательные методы для реализации метода get и set свойства C #, так что используемое значение «ключа» ограничено определением свойства.

Обновление: так как это уже происходило раньше, я обернул это, с небольшими улучшениями и загружаемым кодом, в посте блога http://www.visualstuart.net/blog2/2011/11/sharing-values-across-wp7-pages/. Наслаждайтесь!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...