1

我正在开发 Windows Phone 8 应用程序。希望有一些从特定用户控件继承的用户控件。我这样定义我的父用户控件:

公共抽象类 WidgetsUserControl : UserControl {

}

孩子喜欢:

公共部分类 childControl:WidgetsUserControl {

}

但它在定义抽象时出错,上面写着:“在声明类型'project1.WidgetsUserControl'时缺少部分修饰符;存在此类型的另一个部分声明”

我究竟做错了什么?

4

2 回答 2

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 设计器会抱怨它无法创建 WidgetsUserControl 的实例(因为它是抽象的)。这使得可视化和编辑 childControl 有点困难。为了解决这个问题,我的建议是取消基础 WidgetsUserControl 中的“抽象”。如果您真的希望基类是抽象的,请参阅此处以获取其他建议:

设计器中的抽象类

于 2013-02-06T17:42:03.313 回答
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>
于 2013-02-08T11:43:05.590 回答