2014-01-30 1 views
0

Я хочу реализовать Canvas, который позволяет перетаскивать объекты. Таким образом, я полагал, что я мог бы просто наследовать от Canvas и переопределить события мыши:Inheriting from 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"> 

Но я получаю сообщение об ошибке:

The name "DragCanvas" does not exist in the namespace "clr-namespace:ISC_CG".

я упускаю какой-то шаг здесь?

Спасибо.

+0

- это холст в той же сборке, что и окно? – thumbmunkeys

+0

Вы пытались создать проект? Вы получите эту ошибку, пока она не будет скомпилирована. – Matt

+0

@ thumbmunkeys Да, это все в одном проекте. –

ответ

1

FYI - Вот как я установил его:

  1. мне пришлось удалить все ссылки на код-позади, чтобы «mainCanvas»
  2. Затем я перекомпилировано и получил новую ошибку Xaml: в линия

    < CG: DragCanvas Name = "mainCanvas" Background = "{StaticResource шашек}" ClipToBounds = "True" Focusable = "True" >

Сообщи мне, что мне пришлось заменить «Имя» на «x: Name».