【发布时间】:2012-01-18 21:46:18
【问题描述】:
我正在使用 XAML 和 C# 开发 Metro 应用程序。我在 Win7 中使用 WPF 开始了这个。我创建了一个基类,继承自 UserControl,然后尝试将其放入我的 XAML。
在 Windows 7 中,这很好用:
<MyType:AnImplementation
...
xmlns:MyType="clr-namespace:MyAppNamespace"
/>
我在 Win8 中尝试过同样的事情,但不幸的是,我得到了错误 -
<MyType:AnImplementation
...
xmlns:MyType="using:MyAppNamespace"
/>
现在产生这个: CompileXaml 任务意外失败。然后是空引用异常。
我不是 WPF 专家,所以我可能完全错了 - 我最近才开始研究它,但我在隔离这个问题时遇到了麻烦。这是某种先有鸡还是先有蛋的问题,还是有其他方法可以在 Win8 XAML 中构建自定义用户控件?
编辑:我认为更清楚可能会有所帮助。我在创建用户控件时没有问题,我在创建我自己的基本类型的用户控件时遇到了问题,它继承自UserControl。例如:
一个基类,我们称之为MyBaseType,它继承自UserControl,并有一些虚方法:
public class MyBaseType : UserControl
{
public MyBaseType() : base() {}
}
一个新的用户控件,称为 ActionTile:
public partial class ActionTile : MyBaseType {}
当我把它放在我的 XAML 中时:
<myType:MyBaseType
... (other XAML imports)
xmlns:myType="using:MyNamespace"/>
编译器崩溃了。
如果要复制,请创建一个从UserControl 继承的基类,然后实现一个从该基类继承的控件并尝试创建该新类型的新 UserControl。正如我所说,在 Windows 7 上的 WPF 中运行良好。
【问题讨论】:
-
我开始怀疑自己了; Xaml 编译器错误或尚未在任何地方记录的不同语法。接到一些电话寻求帮助,如果我发现了什么,我一定会发布它。
标签: c# xaml wpf-controls windows-8 windows-runtime