覆盖用户控件的方法

时间:2013-12-20 06:49:49

标签: c# .net wpf

在我的用户控件

public virtual void Test()
{
    MessageBox.Show("Test");
}

我的主窗口

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
    }
}

正如您所见,我的主窗口已经有了继承窗口 那么如何在MainWindow中覆盖我的Test void?

2 个答案:

答案 0 :(得分:2)

您正在询问如何在继承自Z的另一个类Y中覆盖类X的方法。这是不可能的。

您的班级MainWindow继承自Window,这意味着MainWindow的祖先没有定义Test方法。

如果未在祖先中定义,则无法覆盖它。

如果要向从不同基类继承的多个类添加一个或多个方法,可以在interface而不是类中包含这些方法。然后,您可以使其他类实现该接口:

public interface ITest
{
    void Test();
}

public class MyControl : Control, ITest
{
    public void Test()
    {
        MessageBox.Show("MyControl Test");
    }
}

public partial class MainWindow : Window, ITest
{
    public MainWindow()
    {
        InitializeComponent();
    }
    public void Test()
    {
        MessageBox.Show("MainWindow Test");
    }
}

答案 1 :(得分:1)

这是因为如果要覆盖userControl方法Test,则类应该继承此用户控件。例如userControl中的方法测试:

public virtual void Test()
{
    MessageBox.Show("Test");
}

并覆盖:

public partial class MyClass : YourUserControlClass
{
    public override void Test()
    {
        MessageBox.Show("Message2");
    }
}