Я хотел бы переопределить класс ядра wpf API (UIElement), я не хочу наследовать класс.Переопределите класс для добавления новых функций или найдите способ
У меня есть проект на MS Kinect, я переработал курсоры, сопоставленные с рукой скелета пользователя. Я применил подобное событие к тем, что мышь подняла (введите элементы, оставьте элемент ...). Я хочу, чтобы все элементы Наследование от UIElement, чтобы получить некоторые присоединенные свойства:
KinectCursorEnter, KinectCursorMove...
и некоторые свойства:
public bool IsKinectLeftCursorOver { get; set; }
public bool IsKinectLeftCursorDirectlyOver { get; set; }
public bool IsKinectRightCursorOver { get; set; }
public bool IsKinectRightCursorDirectlyOver { get; set; }
public bool IsKinectLeftCursorCaptured { get; set; }
...
Я знаю, что есть много способов натворить, если я изменю такого класса, но на этом уровне я хочу добавить свойства thoses. (UIElement
уже реализуют такие вещи, как MouseEnter
, StylusEnter
...). Kinect представляет собой устройство ввода, как и любой другой (мышь, перо, клавиатура ...)
Я попробовать:
- Для наследования UIElement и добавить эту функцию, но тогда я должен был бы Переопределите все классы.
Я посмотрим:
- Если есть такая вещь, как открытые классы в Ruby
- Если я могу использовать расширение (link)
- Если я могу использовать каким-либо образом адаптер шаблон
до сих пор я использую использование:
- интерфейс, и я заново все элементы: У меня есть
KinectButton
что наследует отButton
и реализуетIKinectInputElement
, но я не могу сделать, что для некоторого класса, которые являютсяsealed
(Rectangle, Ellipse ...)
Я думаю, что через несколько месяцев (годы?) MSFT реализует эти свойства и метод в Wpf API. Но пока мне нужен путь.
PS: Я не хочу управлять мышью одной рукой пользователя. есть одна мышь, я хочу иметь два курсора. и у меня есть такие события, как: KinectLeftCursorEnter, KinectRightCursorEnter и т. д.
Я смотрю на расширение, проблема в том, что при вызове конструктора класса я хочу добавить обработчик к событиям: this.KinectCursorEnter + = new KinectCursorEventHandler (OnKinectCursorEnter); И соответствующий обработчик. Мне не нужна такая функция в другом методе, потому что я просто хочу поставить свой контроль на мою страницу wpf и сделать работу с тигами – astreal
Для этого я думаю, что у вас нет другого выбора, кроме наследования от класса. –
Если подумайте, что я сохраню свой интерфейс и наследую визуальный элемент, который мне нужен. Я нашел способ обрабатывать KinectUIElement и non-KinectUIElement в одно время на уровне KinectCursorManager. Я открываю этот вопрос, чтобы узнать, есть ли другой ответ.В любом случае @Asif спасибо за ваш ответ. Я отвечу на ваш ответ, как только у меня хватит репутации (в большинстве случаев расширение работает в большинстве случаев). – astreal