自定义BasePage导致设计视图中断

时间:2011-08-15 12:30:24

标签: visual-studio-2010 windows-phone-7 inheritance windows-phone-7.1

每次我需要导航到应用中的其他页面时,我都厌倦了输入this.NavigationService.Navigate(new Uri(page.xaml, UriKind.Relative));

所以我创建了一个带虚拟的自定义BasePage来帮助浏览我的应用。

我遇到的问题是在VS2010中,如果我打开了源视图和设计视图,设计只显示了Windows手机背景,我从我的xaml的顶部到底部得到了一些蓝色的摇摆线,并且沿着不支持x行。这种情况发生在我设置为从我的自定义BasePage继承的任何页面上。

但是,如果我在Windows Phone或Emmulator上运行该应用程序,它将起作用。

有没有人有任何关于我可以尝试保持我的设计视图工作的建议,同时应用我的自定义基础,或者我是否遗漏了某些东西?

我的BasePage的略微缩减版本是:

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的{​​{1}}方法,我会在其中执行安全检查以查看是否:

  1. 已启用安全性
  2. 用户已登录
  3. 如果安全性已启用但用户未登录,则会立即将其重定向到登录页面。

    我觉得这很有用,因为我不需要在现有页面或新页面上添加任何代码来处理这个问题,只要它们来自OnNavigatedTo

1 个答案:

答案 0 :(得分:1)

我不建议使用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)