从Silverlight中的UserControl派生

时间:2008-12-30 18:03:16

标签: silverlight silverlight-2.0

在Silverlight 2中,我有一个控件的类声明:

public partial class ClassX : UserControl

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

但是,我无法找到替换其基类的其他部分类。知道其他部分课程在哪里或者我是怎么做的?

2 个答案:

答案 0 :(得分: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();
  }
}

答案 1 :(得分:3)

UserControl的部分类由XAML定义,框架期望它从UserControl派生。你想达到什么目的?你可能最好使用封装而不是继承。如果你必须使用继承,那么看看从其他派生出来你可能最好从其他控件类派生,比如ContentControl或Control。 Jesse Liberty在great series of videosSilverlight.net进行了{{3}}。