2

我想重新定义一个核心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; }
        ...

我知道如果我改变这样的一个类,有很多方法会把事情搞砸,但在这个级别上,我想添加这些属性。(UIElement已经实现了诸如...之类的东西MouseEnterStylusEnter。Kinect 与其他任何输入设备(鼠标、触控笔、键盘......)一样是一种输入设备

我试过了:

  • 要继承 UIElement 并添加功能,但我必须重新实现所有类。

我看了一下:

  • 如果有像 Ruby 的开放课程这样的东西
  • 如果我可以使用扩展名(链接
  • 如果我可以以任何方式使用适配器模式

到目前为止,我正在使用:

  • 一个接口,我重新定义了所有元素:我有一个KinectButton继承自Button并实现的接口,IKinectInputElement但我不能为某些类sealed(矩形,椭圆......)

我想我几个月(几年?)MSFT 将在 Wpf API 中实现那些属性和方法。但现在我需要一个方法。

PS:我不想用用户的一只手来控制鼠标。有一只鼠标,我想要两个光标。我有诸如:KinectLeftCursorEnter、KinectRightCursorEnter 等事件。

4

1 回答 1

4

您可以使用扩展方法来扩展类。

于 2012-06-06T07:53:58.113 回答