我知道这与"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才能编辑这个项目?
答案 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"
>