如何用继承实现用户控制的通用部分?

时间:2010-11-21 02:05:06

标签: c# silverlight silverlight-4.0

我有一些用于所有用户控制的常用部件。它在界面中定义,比如MyInterface。

然后我在一个类中实现它的一部分,比如说MyBaseClass:

class MyBaseClass : MyInterface    
{    
//......    
}

然后当我创建一个用户控件时,我希望这个用户控件具有执行的通用部分。所以我想将MyControl后面的代码更改为:

public partial class MyControl : UserControl, MyBaseClass
    {
        public MyControl()
        {
            InitializeComponent();
        }
    }

但系统会给我错误。原因:Mybase不是部分类。如果将MyBaseClass更改为partial,仍会让错误说“不允许多基类”。

一种解决方案就像

public partial class MyUserControl : UserControl, MyInterface
    {
        public MyUserControl ()
        {
            InitializeComponent();
        }
    }

但这会导致每个用户控件的重复实现。许多副本和糊。我不想这样。

尝试以下方式:

public class MyBaseClass : UserControl, MyInterface

public partial class MyBaseClass : UserControl, MyInterface

我收到了错误: “MyUserControl”的部分声明不得指定不同的基类

如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

我建议你这样做: -

public class MyBaseClass : UserControl, MyInterface 

你尝试了但是有一个转折点。然后,当您从此创建派生的“UserControl”时,从标准Usercontrol开始,然后将代码隐藏文件更改为: -

public partial class MyDerivedClass : MyBaseClass

将Xaml更改为: -

<local:MyBaseClass x:Class="MyNamespace.MyDerivedClass"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="clr-namespace:MyNamespace"
>
    <Grid x:Name="LayoutRoot" Background="White">
    </Grid>
</local:MyBaseClass>