每次我需要导航到应用中的其他页面时,我都厌倦了输入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}}方法,我会在其中执行安全检查以查看是否:
如果安全性已启用但用户未登录,则会立即将其重定向到登录页面。
我觉得这很有用,因为我不需要在现有页面或新页面上添加任何代码来处理这个问题,只要它们来自OnNavigatedTo
。
答案 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)