1

我知道这与“Windows Presentation Foundation (WPF) 项目中不支持 PageFunction”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" >

如原始问题中所述,Microsoft 页面上有有关此确切问题的报告。提到了一个涉及“ViewBase”的解决方法,但我看不出这与 PageFunction 问题有什么关系(我对 XAML 很陌生,所以我可能会遗漏一些简单的东西)。

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

谁能建议我需要在我的 XAML 或代码隐藏中更改什么以便能够直观地编辑此页面?

还是我应该放弃并重新下载 VS2010 来编辑这个项目?

4

1 回答 1

2

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

班级:

public class WizardResultPageFunction : PageFunction<WizardResult>
{
}

代码隐藏: 要么更改类以从新类继承,要么完全删除基类声明并让 XAML 定义基类:

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

XAML: 替换为PageFunctionlocal: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"
>
于 2012-11-27T14:52:56.780 回答