2012-05-15 2 views
0

Я создал следующий UserControl:Что случилось с объявлением этого маршрутизируемого события?

public partial class ReplacementPatternEditor : UserControl, INotifyPropertyChanged 
{ 
    .... 

    public static readonly RoutedEvent CollectionChanged = EventManager.RegisterRoutedEvent(
     "CollectionChanged", RoutingStrategy.Bubble, typeof(RoutedEventHandler), typeof(ReplacementPatternEditor)); 

    void RaiseCollectionChangedEvent() 
    { 
     RoutedEventArgs newEventArgs = new RoutedEventArgs(ReplacementPatternEditor.CollectionChanged); 
     RaiseEvent(newEventArgs); 
    } 

    ... 
} 

Теперь, когда я пытаюсь использовать это перенаправленное событие в моем XAML коде:

<local:ReplacementPatternEditor ItemsSource="{Binding MyItemSource}" CollectionChanged="OnCollectionChanged"/> 

я получаю следующее сообщение об ошибке при компиляции:

The property 'CollectionChanged' does not exist in XML namespace 'clr-namespace:MyNamespace' 

Почему я получаю это, и как я могу организовать перенаправленные события?

ответ

2

Глядя на это MSDN Link. Он говорит о регистрации обработчика, который вы сделали, а затем говорит о предоставлении CLR Accessors для события, которое я не вижу в вашем коде. Затем он добавляет обработчик события. Вы не имеете объявление событие

т.е. что-то вроде этого

public static readonly RoutedEvent CollectionChangedEvent = EventManager.RegisterRoutedEvent( 
    "CollectionChanged", RoutingStrategy.Bubble, typeof(RoutedEventHandler), typeof(ReplacementPatternEditor)); 

public event RoutedEventHandler CollectionChanged 
{ 
    add { AddHandler(CollectionChangedEvent, value); } 
    remove { RemoveHandler(CollectionChangedEvent, value); } 
} 


void RaiseCollectionChangedEvent() 
{ 
    RoutedEventArgs newEventArgs = new RoutedEventArgs(ReplacementPatternEditor.CollectionChanged); 
    RaiseEvent(newEventArgs); 
} 
Смежные вопросы