Перейдите на страницу xaml из изолированного хранилища. - PullRequest
0 голосов
/ 09 февраля 2012

Я хотел бы знать, делал ли кто-то это раньше или пытался это сделать.Я хотел бы перейти с моей текущей страницы на страницу, созданную и сохраненную в изолированном хранилище.

Возможно ли это?

Я уже нашел способ генерации кода xaml, и я работаю над созданием файла xaml.cs, но я не могу найти способ перехода к вновь созданному и существующему файлу в изолированномместо хранения.Я использую схему URI "isostore", но она вызывает исключение в RootFrame_NavigationFailed: [System.InvalidOperationException] = {"XAML не найден в расположении '/isostore;/screenTest.xaml'."}.Заранее спасибо.

С наилучшими пожеланиями,

Cipri

Ответы [ 2 ]

1 голос
/ 09 февраля 2012

Я думаю, что самое близкое, что вы можете получить:

  • Хранить пользовательские элементы управления (а не страницы) в изолированном хранилище
  • Загружать их, используя XamlReader.Load
  • Вставить загруженный UserControl внутри текущей страницы

Недостатки:

  • Вы можете забыть о файле с выделенным кодом, так как не можете его скомпилировать.Вам нужно будет найти другой способ связать события.Я предлагаю использовать подход MVVM, связывая действия и используя одну и ту же модель представления для каждого usercontrol
  • Вы не используете NavigationService, поэтому вам придется обрабатывать навигацию (кнопка «Назад» и возобновление работы приложения после захоронения)
0 голосов
/ 09 февраля 2012
public MainPage()
{
    InitializeComponent();
    this.Loaded += new RoutedEventHandler(MainPage_Loaded);
}

void MainPage_Loaded(object sender, RoutedEventArgs e)
{
    string UserName;

    IsolatedStorageSettings.ApplicationSettings.TryGetValue<string>("UserName", out UserName);
    if (!string.IsNullOrEmpty(UserName))
    {
        txtUserName.Text = UserName;
        txtPassword.Focus();
    }

    else
        txtUserName.Focus();
}

private void btnLogin_Click(object sender, RoutedEventArgs e)
{
    IsolatedStorageSettings.ApplicationSettings["UserName"] = txtUserName.Text;
}
...