Вы можете сделать это, используя delegate
.
По сути, вам необходимо создать интерфейс (YourInterface
), который обернет нужные вам функции, а затем заставить пользовательский элемент управления и ваш класс реализовать этот интерфейс.
Затем убедитесь, что пользовательский элемент управления имеет ссылку на объект типа IYourInterface
, поэтому, когда ваш пользовательский элемент управления пытается вызвать метод Interface
, он вызывает метод вашего класса.
Поскольку и пользовательский элемент управления, и класс реализуют один и тот же интерфейс, они могут рассматриваться как объекты одного и того же типа - то есть вы можете поместить их обоих в коллекцию объектов типа IYourInterface
. Это должно дать вам поведение, которое вы хотите.
В ASP.NET я часто использую эту технику, поскольку мои классы наследуются от abstract class
предков. Я не понимаю, почему WPF не поддерживает это. (