在 Silverlight 2 中,我有以下控件类声明:
public partial class ClassX : UserControl
我希望用派生自 UserControl 的 ClassXBase 替换 UserControl,但我得到了合理的错误“'ClassX' 的部分声明不能指定不同的基类”
但是,我找不到另一个部分类来替换它的基类。知道这个其他部分类在哪里或我是如何做到的吗?
在 Silverlight 2 中,我有以下控件类声明:
public partial class ClassX : UserControl
我希望用派生自 UserControl 的 ClassXBase 替换 UserControl,但我得到了合理的错误“'ClassX' 的部分声明不能指定不同的基类”
但是,我找不到另一个部分类来替换它的基类。知道这个其他部分类在哪里或我是如何做到的吗?
如果包含 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();
}
}
UserControl 的分部类由 XAML 定义,框架期望它派生自 UserControl。你想达到什么目的?使用封装而不是继承可能会更好。如果您必须使用继承,那么从其他类派生您可能会更好地从其他控件类(如 ContentControl 或 Control)派生。Jesse Liberty在Silverlight.net上制作了一系列精彩的视频。