如何覆盖 WPF C# 中的内置事件处理程序

how to override built in event handler in WPF c#

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

有可能。

假设您要覆盖 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
        }

但是,相同 class 的每个元素将表现相同。所以当你想定义一个新的自定义时这真的很有用 class

您可以创建自定义控件并覆盖事件。请参考我为 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);
    }
}