Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio 2010 导致设计视图中断的自定义基页_Visual Studio 2010_Windows Phone 7_Inheritance_Windows Phone 7.1 - Fatal编程技术网

Visual studio 2010 导致设计视图中断的自定义基页

Visual studio 2010 导致设计视图中断的自定义基页,visual-studio-2010,windows-phone-7,inheritance,windows-phone-7.1,Visual Studio 2010,Windows Phone 7,Inheritance,Windows Phone 7.1,我厌倦了键入this.NavigationService.Navigate(新Uri(page.xaml,UriKind.Relative)),每次我需要导航到应用程序中的不同页面时 因此,我创建了一个自定义BasePage,其中包含一个虚拟页面,以帮助在我的应用程序中导航 我遇到的问题是在VS2010中,如果我打开了源代码和设计视图,设计只显示windows phone背景,我的xaml从顶部到底部有一些蓝色的摇摆线,不支持沿x线的消息。这发生在我设置为从自定义基本页继承的任何页面上 但是,如

我厌倦了键入
this.NavigationService.Navigate(新Uri(page.xaml,UriKind.Relative)),每次我需要导航到应用程序中的不同页面时

因此,我创建了一个自定义
BasePage
,其中包含一个虚拟页面,以帮助在我的应用程序中导航

我遇到的问题是在VS2010中,如果我打开了源代码和设计视图,设计只显示windows phone背景,我的xaml从顶部到底部有一些蓝色的摇摆线,不支持沿x线的消息。这发生在我设置为从自定义基本页继承的任何页面上

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

是否有人对我在应用自定义基础时,或者如果我遗漏了什么,我可以尝试让我的设计视图保持工作状态有什么建议

略为精简的my BasePage版本是:

public class BasePage : PhoneApplicationPage
{
    public virtual void NavigateTo(string pageName, params Tuple<string,string>[] queryString)
    {
      // Code to perform this.NavigationService.Navigate
    }
}
公共类基页:PhoneApplicationPage
{
公共虚拟void NavigateTo(字符串pageName,参数元组[]查询字符串)
{
//执行此操作的代码。NavigationService.Navigate
}
}
编辑2011-08-16

此基本页的一部分覆盖了
PhoneApplicationPage
OnNavigatedTo
方法,在该方法中,我执行安全检查以查看是否:

  • 安全性已启用
  • 用户已登录
  • 如果启用了安全性,但用户未登录,则会立即将其重定向到登录页面


    我发现这很有用,因为我不需要向现有页面或新页面添加任何代码来处理这一问题,只要它们来自
    BasePage

    ,我不建议为此使用BasePage。相反,只需在
    App.xaml.cs
    文件中添加
    NavigateTo
    方法作为静态方法即可

    public static void NavigateTo(string pageName, params Tuple<string,string>[] queryString)
    {
      // Code to perform this.NavigationService.Navigate
    }
    
    publicstaticvoidnavigateTO(字符串pageName,参数Tuple[]queryString)
    {
    //执行此操作的代码。NavigationService.Navigate
    }
    
    另外,请记住在
    Dispatcher.BeginInvoke
    中包装对
    的调用,以便正确执行所有转换效果

    还有一个额外提示:不要在VisualStudio中使用设计器。相反,将XAML文件的“默认编辑器”设置为“源代码”编辑器,这样就永远不会打开设计器。这使VisualStudio更加稳定


    如果你想要一个设计师,你应该获得Microsoft Expression(Blend)

    谢谢你的帮助,我可能应该添加我使用
    OnNavigateTo
    覆盖,这样我就可以在每个页面上检查我的应用是否开启了密码功能,然后在进入页面之前检查我是否登录。已经有expression blend,也有sdk工具,这就是为什么我的BasePage不会返回设计的原因。我发现我不能将此作为静态方法,因为
    this.NavigationService.NavigateTo
    不起作用。导航服务不会在
    应用程序
    类中编译,或者我遗漏了什么?哦,对了,当然,你需要在当前的RootVisual上调用它<代码>(App.rootvisualas PhoneApplicationFrame)。导航到(…)
    今晚我会试试。你对我如何在我的页面上执行安全检查有什么建议吗?或者最好还是从
    应用程序
    以静态方式再次执行,只需从每个页面的
    on导航到
    ?我已经在编辑中解释了我的问题。此类检查属于您的viewmodel或通用应用程序逻辑。如果您当前的想法是查看每一页,那么您应该重新考虑您的体系结构。