如何在WPF中覆盖内置事件处理程序c#

时间:2015-02-04 15:50:15

标签: c# wpf eventhandler

在我的项目中,我想重写在WPF中构建的Touchup事件处理程序。我不知道如何覆盖这个事件处理程序供我自己使用。那可能吗?有人可以提供一些例子,我没有得到一些参考或示例。

2 个答案:

答案 0 :(得分:2)

您可以创建自定义控件并覆盖事件。请参考我为TextBox控件尝试的以下代码。

class TextBoxEx : TextBox
{
    protected override void OnTouchUp(System.Windows.Input.TouchEventArgs e)
    {
        base.OnTouchUp(e);
    }

    protected override void OnTouchDown(System.Windows.Input.TouchEventArgs e)
    {
       base.OnTouchDown(e);
    }
}

答案 1 :(得分:0)

有可能。

假设您要覆盖this TouchUp event(完全覆盖它)。您需要定义一个新函数来处理这个问题。类似的东西:

private void Custom_TouchUp(object sender, TouchEventArgs e)
        {
            // Do some stuff there          
        }

(可能不是TouchEventArgs,我还没有尝试过,但看起来很像)

然后,在你的xaml中,在你的对象定义中,你需要指定它应该使用这个函数的目标对象。如果它是一个组合框(例如),你会有这样的东西:

<Combobox [...] TouchUp=Custom_TouchUp>
    <Eventual parameters>
</Combobox>

瞧!您的对象将使用您的新功能。

现在,假设您只想更改当前事件的一小部分,然后您可以覆盖事件发生时将调用的the OnTouchUp function。这样的事情应该做:

public override void OnTouchUp()
        {
            base.OnTouchUp();
            // Other stuffs
        }

但是,同一类的每个元素都会起作用。因此,当您想要定义新的自定义类

时,这非常有用