Fr3nzy
@Fr3nzy

Silverlight, Windows Phone 7 Mango + NavigationServices.Navigate()?

Суть проблемы: при вызове NavigationServices.Navigate() из класса, принадлежащего какой-либо xaml-вьюхе, навигейт работает, а при вызове из какого-либо вспомогательного класса — почему-то нет.



Например:

страница MainPage.xaml, класс MainPage.xaml.cs, метод
NavigationServices.Navigate( new Uri("/listItems", UriKind.Relative/Absolute) )

Работает.


Так же существует класс JSON-RPC, который служит для реализации общения с сервером. Вот если в нем вызывать Navigate(), то функция всегда возвращает «FileNotFound».

Пример функции:
public void processResponce(item Response)
{
    try
    {
        var token = Response.result.token;
        this.setToken("&token=" + token);
        Debug.WriteLine(this.apiUrl);

        (Application.Current.RootVisual as PhoneApplicationFrame).Navigate(new Uri("/listItems", UriKind.Relative));
    }
    catch
    {
        Deployment.Current.Dispatcher.BeginInvoke(() =>
            {
                var messageFromServer = Response.error.message;
                MessageBox.Show(messageFromServer);

                Debug.WriteLine(messageFromServer);
            });
    }
}

Не работает.

На девятой строке этой функции выдается эксепшн о несуществющем файле.


В данном примере используется UriMapping, поэтому Uri такой. Пробовал также указывать полный путь — не помогает.


Быть может существуют какие-то ограничения, о которых мне ничего не известно?
  • Вопрос задан
  • 2832 просмотра
Решения вопроса 1
Fr3nzy
@Fr3nzy Автор вопроса
Я дурак. 4 часа убил на это. А ведь ответ-то рядом! :)

Если кто-нибудь с подобным столкнется, вот ответ:
  Deployment.Current.Dispatcher.BeginInvoke(() =>
                    {
                        (Application.Current.RootVisual as PhoneApplicationFrame).Navigate(new Uri("/listItems", UriKind.Relative));
                    });


Просто необходимо было вызвать BeginInvoke, чтобы приложение так же не ругалось на недостаток прав доступа.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы