3

在 Silverlight 2 中,我有以下控件类声明:

public partial class ClassX : UserControl

我希望用派生自 UserControl 的 ClassXBase 替换 UserControl,但我得到了合理的错误“'ClassX' 的部分声明不能指定不同的基类”

但是,我找不到另一个部分类来替换它的基类。知道这个其他部分类在哪里或我是如何做到的吗?

4

2 回答 2

12

如果包含 UserControl 基类的命名空间,只要使用命名空间即可。例如:

public abstract class MyBaseUserControl : UserControl
{
  // ...
} 

然后你必须在 XAML 中使用这个类(注意我的命名空间,然后使用新的命名空间作为文档的根):

<!-- Page.xaml -->
<my:BaseUserControl 
    x:Class="SilverlightApplication11.Page"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:my="clr-namespace:SilverlightApplication11"
    Width="400" Height="300">
    <Grid x:Name="LayoutRoot" Background="White">

    </Grid>
</my:BaseUserControl>

这不会神奇地更改代码隐藏中的基类,因此将该代码更改为您的基类:

public partial class Page : BaseUserControl
{
  public Page()
  {
    InitializeComponent();
  }
}
于 2008-12-31T10:09:19.383 回答
3

UserControl 的分部类由 XAML 定义,框架期望它派生自 UserControl。你想达到什么目的?使用封装而不是继承可能会更好。如果您必须使用继承,那么从其他类派生您可能会更好地从其他控件类(如 ContentControl 或 Control)派生。Jesse Liberty在Silverlight.net上制作了一系列精彩的视频

于 2008-12-30T19:10:45.357 回答