В настраиваемом FrameworkElement (a Shape) у меня есть:
public static readonly RoutedEvent DragDeltaEvent = EventManager.RegisterRoutedEvent("DragDelta", RoutingStrategy.Bubble, typeof(DragDeltaEventHandler), typeof(MyShape));
public event DragDeltaEventHandler DragDelta { add { AddHandler(DragDeltaEvent, value); } remove { RemoveHandler(DragDeltaEvent, value); } }
// xaml DataTemplate:
<local:MyShape DragDelta="MyShape_DragDelta" />
Приведенный выше AddHandler
не вызывается при создании фигур (в DataTemplate).
Я никогда не получаю событие в коде позади, когда я запускаю его в своей форме:
RaiseEvent(new DragDeltaEventArgs(...);
AddHandler
не вызывается, потому что WPF будет вызывать его напрямую, а не через оболочку, как _2 _ / _ 3_ дляDependencyProperty
, но помимо этого он должен работать. По крайней мере, здесь на моем примере это работает - person dkozl   schedule 21.02.2014RaiseEvent
не доходит до обработчикаMyShape_DragDelta
в коде позади. - person Gerard   schedule 21.02.2014MyShape
у вас естьRaiseEvent(new DragDeltaEventArgs(MyShape.DragDeltaEvent))
, который, я полагаю, вы проверили, выполняется, аMyShape_DragDelta
не вызывается. - person dkozl   schedule 21.02.2014RaiseEvent(new DragDeltaEventArgs(2,2);
(2,2 в качестве примера), но без сбоев в коде. - person Gerard   schedule 21.02.2014DragDeltaEventArgs
уже занято, или я должен добавить владельца? - person Gerard   schedule 21.02.2014Border
вместоShape
в качестве базового класса, и я использовал его вListBox.ItemTemplate
- person dkozl   schedule 21.02.2014Thumb
. - person Gerard   schedule 21.02.2014RoutedEvent
вDragDeltaEventArgs
(потому что он не позволяет вам), поэтому он будет вызыватьThumb.DragDelta
, а неMyShape.DragDelta
- person dkozl   schedule 21.02.2014