我正在开发 Windows Phone 8 应用程序。希望有一些从特定用户控件继承的用户控件。我这样定义我的父用户控件:
公共抽象类 WidgetsUserControl : UserControl {
}
孩子喜欢:
公共部分类 childControl:WidgetsUserControl {
}
但它在定义抽象时出错,上面写着:“在声明类型'project1.WidgetsUserControl'时缺少部分修饰符;存在此类型的另一个部分声明”
我究竟做错了什么?
我正在开发 Windows Phone 8 应用程序。希望有一些从特定用户控件继承的用户控件。我这样定义我的父用户控件:
公共抽象类 WidgetsUserControl : UserControl {
}
孩子喜欢:
公共部分类 childControl:WidgetsUserControl {
}
但它在定义抽象时出错,上面写着:“在声明类型'project1.WidgetsUserControl'时缺少部分修饰符;存在此类型的另一个部分声明”
我究竟做错了什么?
它抱怨您在 WidgetsUserControl 类的定义中没有“partial”关键字。您可能有一个 WidgetsUserControl 对应的 XAML 文件,该文件部分定义了该类,因此在这里,您需要指定它也部分定义。
public abstract partial class WidgetsUserControl : UserControl
请注意,如果您朝着这个方向前进,那么您还需要使 childControl 定义保持一致。也就是说,在您将拥有的代码中:
public partial class childControl : WidgetsUserControl
在 XAML 中,您还需要指定 childControl 是一个 WidgetsUserControl,而不仅仅是一个简单的 UserControl:
<project1:WidgetsUserControl>
</project1:WidgetsUserControl>
虽然这会起作用,但您会遇到的一个问题是 Visual Studio 设计器会抱怨它无法创建 WidgetsUserControl 的实例(因为它是抽象的)。这使得可视化和编辑 childControl 有点困难。为了解决这个问题,我的建议是取消基础 WidgetsUserControl 中的“抽象”。如果您真的希望基类是抽象的,请参阅此处以获取其他建议:
This works good:
Code behind for parent user control:
public abstract partial class WidgetsUserControl : UserControl {
...
}
xaml for parent class:
<UserControl
...
xmlns:we="clr-namespace:project1"
...>
</UserControl>
code behind for child user control:
public partial class childControl : WidgetsUserControl {
...
}
xaml for child user control:
<we:WidgetsUserControl x:Class="project1.childControl"
...
xmlns:we="clr-namespace:project1"
...>
<Grid x:Name="LayoutRoot" Background="{StaticResource PhoneChromeBrush}"></Grid>
</we:WidgetsUserControl>