Windows Presentation Foundation项目不支持PageFunction

时间:2012-11-27 14:00:02

标签: wpf xaml visual-studio-2012 expression-blend

我知道这与"PageFunction is not supported in a Windows Presentation Foundation (WPF) project" 2012中提出的问题相同 - 但是,我不确定如何应用那里提到的解决方法,并认为将此作为单独提出可能更合适题。如果这违反了网站精神,请提前道歉。

总结问题:我有一个C#Visual Studio 2010 WPF项目已经有几年了,我现在正在尝试在Visual Studio 2012中打开。虽然项目仍然可以构建并运行良好,但我需要编辑XAML标记和VS2012中的设计视图抱怨“标记无效”。它绊倒的确切错误是:

  

Windows Presentation Foundation不支持页面功能   (WPF)项目

XAML的开头如下:

 <PageFunction
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="clr-namespace:MyNamespace" 
    x:Class="MyProject.WizardPage1"
    x:TypeArguments="local:WizardResult"
    KeepAlive="True"
    WindowTitle="My Project" Height="350" ShowsNavigationUI="False" Width="700" >

正如原始问题中所述,在this Microsoft页面上有关于此确切问题的报告。有一个涉及“ViewBase”的解决方法,但是我看不出它与PageFunction问题的关系(我对XAML很新,所以我可能会遗漏一些简单的东西)。

我尝试在Blend for VS2012中打开该项目(支持非Windows 8项目的新预览版本),但是这给出了关于不支持PageFunction的相同错误。 VS2012最近的更新1也没有解决问题。

为了能够直观地编辑此页面,有人可以建议我需要在XAML或代码隐藏中进行更改吗?

或者我应该放弃并重新下载VS2010才能编辑这个项目?

1 个答案:

答案 0 :(得分:2)

根据变通方法,您需要创建一个派生自PageFunction<WizardResult>的类,然后更新您的XAML以继承该类。

<强>类别:

public class WizardResultPageFunction : PageFunction<WizardResult>
{
}

<强>代码隐藏: 更改类以继承新类,或者完全删除基类声明并让XAML定义基类:

public partial class WizardPage1
// or: 
// public partial class WizardPage1 : WizardResultPageFunction 
{
   ...
}

<强> XAML:PageFunction替换为local:WizardResultPageFunction并删除x:TypeArguments属性:

<local:WizardResultPageFunction 
   xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
   xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
   xmlns:local="clr-namespace:MyNamespace" 
   x:Class="MyProject.WizardPage1"
   KeepAlive="True"
   WindowTitle="My Project" Height="350" ShowsNavigationUI="False" Width="700"
>