命名空间<page> .g.cs </page>中不存在类型或命名空间名称

时间:2014-04-17 10:41:56

标签: c# wpf xaml windows-phone-7 windows-phone-8

我正在创建一个应用程序,我需要使用自定义BasePage,应用程序的所有其他页面将从该继承。我创建了一个新的TestProject并执行了以下所有操作在Perfactly中工作,但是当我在MyProject中执行同样的操作时,会出现错误

  

命名空间TestPage.g.cs

中不存在类型或命名空间名称

这是BaseScreenPage的代码

namespace MyProject
{
    public class BaseScreenPage : PhoneApplicationPage
    {
        private static bool isToShowAgain = true ;
        public static bool isToNavigateToContent;
        public BaseScreenPage() 
        { 

        }

        protected override void OnNavigatedTo(NavigationEventArgs e) 
        {
            base.OnNavigatedTo(e);
            if (isToNavigateToContent) {
                isToNavigateToContent = false;
                NavigationService.Navigate(new Uri("/Screens/ContentScreen.xaml", UriKind.Relative));
            }


         }


    }
}

我正在制作继承自BaseScreenPage的页面

<hyper:BaseScreenPage
    x:Class="MyProject.TestPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
    xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"

    FontFamily="{StaticResource PhoneFontFamilyNormal}"
    FontSize="{StaticResource PhoneFontSizeNormal}"
    Foreground="{StaticResource PhoneForegroundBrush}"
    SupportedOrientations="Portrait" Orientation="Portrait"
    mc:Ignorable="d"
    xmlns:hyper="clr-namespace:MyProject"
    shell:SystemTray.IsVisible="True">

    <!--LayoutRoot is the root grid where all page content is placed-->
    <Grid x:Name="LayoutRoot" Background="Transparent">
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="*"/>
        </Grid.RowDefinitions>

        <!--TitlePanel contains the name of the application and page title-->
        <StackPanel Grid.Row="0" Margin="12,17,0,28">
            <TextBlock Text="MY APPLICATION" Style="{StaticResource PhoneTextNormalStyle}"/>
            <TextBlock Text="page name" Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}"/>
        </StackPanel>

        <!--ContentPanel - place additional content here-->
        <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">

        </Grid>
    </Grid>

</hyper:BaseScreenPage>

我也在TestPage代码中执行此操作

namespace MyProject
{
    public partial class TestPage : BaseScreenPage
    {
        public TestPage()
        {
            InitializeComponent();
        }
    }
}

我已尝试Question

中的所有解决方案

请建议一些解决方案

1 个答案:

答案 0 :(得分:0)

我不确定这是否是问题的原因,但您的XAML对我来说是错误的。您在BasePage XML命名空间中声明了hyper节点,但您还没有在任何地方声明该命名空间。你错过了一个声明:

<hyper:BaseScreenPage
    x:Class="MyProject.TestPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:hyper="declareYourNamespaceHere"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
    xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"