我正在创建一个应用程序,我需要使用自定义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
中的所有解决方案请建议一些解决方案
答案 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"