我有UserControl
。
我希望每个UserControl
覆盖一个抽象方法。
这是我的抽象类:
public class MyAbstract
{
public virtual void LoadData()
{
}
}
这是我的用户控件,我最近试图让它工作:
public partial class ucAbstract : UserControl, MyAbstract
{
public ucAbstract()
{
InitializeComponent();
}
public override void LoadData()
{
base.Load();
{
}
}
}
错误是:
Class' ucAbstract'不能有多个基类:' UserControl'和' MyAbstract'
我该怎么做?
附加: 我可能不得不删除此添加内容并创建一个新问题。
这就是我想要实现的目标:
我的主要表单包含2个UserControls
:ucOne
,ucTwo
这两个控件都有一个名为' LoadData'。
的方法我的主要形式有一个功能:
void LoadControl(iuserControl myUserControl)
{
myUserControl.LoadData();
}
答案 0 :(得分:4)
这个怎么样。
创建一个基础class
,其中包含UserControl
的所有常用方法。确保使用UserControl
类
<强> MyAbstract.cs 强>
public abstract class MyAbstract : UserControl
{
public virtual void LoadData()
{
}
}
然后创建一个UserControl
并使用MyAbstract
类扩展它。你可以这样使用。
<强> ucAbstract.xaml.cs 强>
public partial class ucAbstract : MyAbstract
{
public ucAbstract()
{
InitializeComponent();
}
public override void LoadData()
{
base.LoadData();
{
}
}
}
此外,您需要在xaml中使用<local:MyAbstract>
而不是<UserControl>
<强> ucAbstract.xaml 强>
<local:MyAbstract x:Class="YourNamespace.ucAbstract"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:YourNamespace"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300">
<StackPanel>
<TextBox />
</StackPanel>
</local:MyAbstract>
注意:强>
UserControl
创建多个MyAbstract
作为BaseClass。UserControls
只允许一个级别的继承,至少是这样
MyAbstract
有一个XAML,这肯定不起作用。参考: Partial declarations, must not specify different base classes
答案 1 :(得分:2)
C#不支持多重继承,您不能从多个类(UserControl
和MyAbstract
)继承。你可以使用interface
而不是像这样的类:
public interface IMyAbstract
{
void LoadData();
}
然后你应该实现这样的界面:
public partial class ucAbstract : UserControl, IMyAbstract
{
public void LoadData()
{
}
}
答案 2 :(得分:0)
实际上,w1 w2 w3 w4 ... w52 1 2 3 4 ... 12
1 0 0 1 0 2 4 5 2 ... 4
0 1 0 0 ... 0 1 0 3 4 ... 5
对象需要ICommand
用于条件加载,而不是CommandParameter
方法。
答案 3 :(得分:0)
您可以创建UserControl
Public class MyUserControl : UserControl
{
public virtual LoadData()
{
// ...
}
}