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, чтобы приложение так же не ругалось на недостаток прав доступа.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы