Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在XAML中使用C#自定义子类?_C#_Wpf_Xaml_Inheritance - Fatal编程技术网

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

如何在XAML中使用C#自定义子类?,c#,wpf,xaml,inheritance,C#,Wpf,Xaml,Inheritance,这是我的问题:我想在我的窗口中使用SurfaceInkCanvas的一个子类。 我创建了一个C#类,如下所示: namespace MyNamespace { public class SubSurfaceInkCanvas : SurfaceInkCanvas { private MyWindow container; public SubSurfaceInkCanvas() : base() {

这是我的问题:我想在我的窗口中使用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窗口中使用它。是这样的吗

<MyNamespace:SubSurfaceInkCanvas
    x:Name="canvas"
    Background="White"
    TouchDown="OnTouchDown"/>


我完全错了吗?

您需要添加名称空间(xmlns:myControls),可以这样尝试:

<Window ...
        xmlns:myControls="clr-namespace:MyNamespace;assembly=MyNamespace"
        ...>
    <myControls:SubSurfaceInkCanvas x:Name="canvas"
                                    Background="White"
                                    TouchDown="OnTouchDown"/>
</Window>

为了使用类,您需要导入一个Xml名称空间

<Window x:Class="Namespace.SomeWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> ... </Window>
。。。
注意名称空间是如何导入的。默认名称(无前缀)可以是您想要的任何名称,但最好将其留给Microsoft的表示名称空间。然后是“x”名称空间,它是基本的xaml名称空间(当然可以更改前缀,但应该保持原样)

因此,为了向其中添加您自己的名称空间,有两种方法(如果是本地的,则有一种)

  • CLR名称空间:
    xmlns:=“CLR名称空间:;Assembly=”以获取关于该名称空间的解释