Настраиваемая базовая страница, вызывающая разрыв представления дизайна - PullRequest
0 голосов
/ 15 августа 2011

Мне надоело набирать this.NavigationService.Navigate(new Uri(page.xaml, UriKind.Relative));, каждый раз, когда мне нужно перейти на другую страницу в моем приложении.

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

У меня проблема в VS2010, если у меня открыты исходное и дизайнерское представление, дизайн просто показывает фон телефона Windows, и я получаю некоторые синие волнистые линии прямо сверху донизу моего xaml, и сообщения вдоль линий x не поддерживаются.Это происходит на любой странице, которую я настроил для Inherit с моего пользовательского BasePage.

Однако, если я запусту приложение на моем Windows Phone или в Emmulator, оно будет работать.

Кто-нибудьесть какие-либо предложения о том, что я мог бы попытаться сделать так, чтобы мое представление «Дизайн» работало во время применения моей пользовательской базы, или если я что-то пропустил?

Слегка урезанная версия моей базовой страницы:

public class BasePage : PhoneApplicationPage
{
    public virtual void NavigateTo(string pageName, params Tuple<string,string>[] queryString)
    {
      // Code to perform this.NavigationService.Navigate
    }
}

РЕДАКТИРОВАТЬ 2011-08-16

Часть этой базовой страницы переопределяет метод PhoneApplicationPage OnNavigatedTo, в котором я выполняю проверку безопасности, чтобы убедиться, что:

  1. защита включена
  2. Пользователь вошел в систему

Если защита включена, но пользователь не вошел в систему, они сразу же перенаправляются наСтраница входа в систему.

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

1 Ответ

1 голос
/ 15 августа 2011

Я бы не рекомендовал использовать BasePage для этого. Вместо этого просто добавьте ваш метод NavigateTo в файл App.xaml.cs как статический метод.

public static void NavigateTo(string pageName, params Tuple<string,string>[] queryString)
{
  // Code to perform this.NavigationService.Navigate
}

Кроме того, не забудьте заключить вызов в .Navigate в Dispatcher.BeginInvoke, чтобы все эффекты перехода выполнялись правильно.

И в качестве бонуса: не используйте дизайнер в Visual Studio. Вместо этого установите редактор по умолчанию для файлов XAML в качестве редактора «Исходный код», чтобы конструктор никогда не открывался. Это делает Visual Studio намного стабильнее.

Если вы хотите дизайнера, вы должны получить Microsoft Expression (Blend)

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