在Silverlight 2中,我有一个控件的类声明:
public partial class ClassX : UserControl
我希望将UserControl替换为派生自UserControl的ClassXBase,但我得到了合理的错误“'ClassX'的部分声明不能指定不同的基类”
但是,我无法找到替换其基类的其他部分类。知道其他部分课程在哪里或者我是怎么做的?
答案 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 videos对Silverlight.net进行了{{3}}。