2015-08-13 11 views
1

У меня есть Canvas. Позже в моем коде я создаю новый Canvas, который будет на вершине первого Canvas и должен иметь некоторые из первых Canvas.Копирование обработчика событий с одного холста на другой wpf

Я смог установить все, что хотел. Осталось только зарегистрировать CanvasMouseEnter и MouseMove событий тому же обработчику событий, на который зарегистрирован оригинал Canvas.

Это способ сделать это? Я искал ее, но не нашел того, что искал.

Пример:

private void OnMouseEnter(object sender, MouseEventArgs e) 
{ 
    ////// some code 
} 

Canvas c = new Canvas(); 
c.MouseEnter += OnMouseEnter; 

Canvas c2 = new Canvas(); 
///// I want to do something like this: 
c2.MouseEnter = c.MouseEnter; 
+1

Самый простой и чистое решение будет двигаться обработчики событий первого холста в общественные методы, которые вы затем можете вызывать из второго события холста. – Sinatr

+0

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

+0

Не пробовал, и я предпочитаю не делать этого, потому что холсты расположены в разных проектах dll. – Idanis

ответ

-1

Вы ищете Event Bubbling

Canvas canvas1 = new Canvas(); 
canvas1.Width = 200; 
canvas1.Height = 200; 
canvas1.Background = Brushes.Black; 
canvas1.MouseDown += canvas1_MouseEnter; 

Canvas canvas2 = new Canvas(); 
canvas2.Width = 100; 
canvas2.Height = 100; 
canvas2.Background = Brushes.Red;    
canvas1.Children.Add(canvas2); //canvas1 events will get fired for canvas2 also