我正在开发windows phone 8 app。想要从特定用户控件继承一些用户控件。我像这样定义我的父用户控件:
公共抽象类WidgetsUserControl:UserControl {
}
和孩子一样:
public partial class childControl:WidgetsUserControl {
}
但是在定义抽象时会出错:“在'project1.WidgetsUserControl'类型的声明中缺少部分修饰符;此类型的另一个部分声明存在”
我做错了什么?
答案 0 :(得分:2)
抱怨您在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 Designer会抱怨它无法创建WidgetsUserControl的实例(因为它是抽象的)。这使得对childControl的可视化和编辑有点困难。为了解决这个问题,我的建议是在基础WidgetsUserControl中删除“abstract”。如果您真的希望基类是抽象的,那么请参阅此处获取其他建议:
答案 1 :(得分:1)
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>