继承自Canvas

时间:2014-01-30 20:44:06

标签: c# wpf xaml inheritance namespaces

我想实现一个允许拖动对象的Canvas。所以我想我可以从Canvas继承并覆盖鼠标事件:

namespace ISC_CG
{
    public class DragCanvas : Canvas
    {
        protected override void OnPreviewMouseLeftButtonDown(MouseButtonEventArgs e)
        ...

在XAML中:

<Window x:Class="ISC_CG.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        x:Name="mainWindow"
        DataContext="{Binding ElementName=mainWindow}"
        xmlns:cg="clr-namespace:ISC_CG"
        xmlns:xctk="http://schemas.xceed.com/wpf/xaml/toolkit"
        Title="MainWindow" Height="350" Width="525">
    <cg:DragCanvas Name="mainCanvas" Background="{StaticResource checkers}" ClipToBounds="True" Focusable="True">

但我收到错误:

  

命名空间中不存在名称“DragCanvas”   “CLR-名称空间:ISC_CG”。

我在这里错过了一些步骤吗?

感谢。

1 个答案:

答案 0 :(得分:1)

仅供参考 - 以下是我修复它的方法:

  1. 我不得不将代码隐藏中的所有引用删除到“mainCanvas”
  2. 然后我重新编译并得到一个新的Xaml错误:在行

    &lt; cg:DragCanvas Name =“mainCanvas”Background =“{StaticResource checkers}”ClipToBounds =“True”Focusable =“True”&gt;

  3. 告诉我我必须用“x:Name”替换“Name”。