как переопределить встроенный обработчик событий в WPF С#

В моем проекте я хочу переопределить обработчик событий Touchup, встроенный в WPF. Я не знаю, как переопределить этот обработчик событий для собственного использования. Это возможно? Кто-то может привести несколько примеров, у меня нет ссылок или примеров по этому поводу.


person user2137886    schedule 04.02.2015    source источник
comment
Какое событие вы пытаетесь переопределить?   -  person Chase Ernst    schedule 04.02.2015
comment
такие как Touchup, TouchDown   -  person user2137886    schedule 04.02.2015
comment
Вы пробовали что-то подобное? stackoverflow.com/questions/5774849 /   -  person Chase Ernst    schedule 04.02.2015
comment
@user2137886 user2137886, можете ли вы объяснить, что вы подразумеваете под переопределением этого обработчика событий для моего собственного использования   -  person dkozl    schedule 04.02.2015
comment
@ChaseErnst Я думаю, что с этим все по-другому. он должен включать пользовательские аргументы EvenArgs.   -  person user2137886    schedule 04.02.2015
comment
@dkozl, например, я хочу передать некоторые свои параметры и получить некоторые   -  person user2137886    schedule 04.02.2015
comment
Возможно, вы можете создать метод для вызова в этом обработчике событий?   -  person Chase Ernst    schedule 04.02.2015


Ответы (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);
    }
}
person Ayyappan Subramanian    schedule 04.02.2015

Возможно.

Допустим, вы хотите переопределить это событие TouchUp (полностью переопределить его). Вам нужно будет определить новую функцию для обработки этого. Что-то типа :

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

(Может это и не TouchEventArgs, я не пробовал, но похоже)

Затем в вашем xaml, в определении вашего объекта, вам нужно указать целевому объекту, что он должен использовать эту функцию. Если это поле со списком (например), у вас будет что-то вроде этого:

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

И вуаля! Ваш объект будет использовать вашу новую функцию.

Теперь, допустим, вы просто хотите немного изменить текущее событие, тогда вы можете просто переопределить функция OnTouchUp, которая будет вызываться при возникновении события. Что-то вроде этого должно делать:

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

Но тогда все элементы одного и того же класса будут действовать одинаково. Так что это действительно полезно, когда вы хотите определить новый пользовательский класс

person Dimitri Mockelyn    schedule 04.02.2015