如何在XAML中使用C#自定义子类?

这是我的问题:我想在MyWindow中使用SurfaceInkCanvas的子类。 我创建了一个这样的C#类:

namespace MyNamespace { public class SubSurfaceInkCanvas : SurfaceInkCanvas { private MyWindow container; public SubSurfaceInkCanvas() : base() { } public SubSurfaceInkCanvas(DrawingWindow d) : base() { container = d; } protected override void OnTouchDown(TouchEventArgs e) { base.OnTouchDown(e); } } } 

我想在我的XAML窗口中使用它。 这是这样的吗?

  

我完全走错了路吗?

您需要导入Xml命名空间才能使用类…

  ...  

请注意命名空间的导入方式。 默认的(无前缀)可以是您想要的任何内容,但最好将其留给Microsoft的演示文稿命名空间。 然后是“x”命名空间,它是基本的xaml命名空间(当然你可以改变前缀,但你应该保持原样)。

因此,为了向它添加自己的命名空间,有两种方法可以实现(一种方法是本地的)。

  • CLR-Namespaces: xmlns:="clr-namespace:;Assembly="
  • URI-Namespaces: xmlns:=""

在您的情况下,您可能希望将前缀设置为“本地”并使用CLR命名空间(因为它是您可以使用的全部)。

导入: xmlns:local="clr-namespace:MyNamespace;Assembly=???"
用法:


或者,如果这些类在外部库中,您可以将CLR命名空间映射到XML命名空间…请参阅此答案以获得对此的详细说明。

您需要添加命名空间(xmlns:myControls),尝试如下: