У меня есть абстрактный базовый класс, который подклассифицирует класс UserControl без XAML. Когда я создаю класс на основе базового класса, все работает нормально (компилируется и выполняется). Но когда я добавляю код в базовый класс для запуска события, он компилируется, но при запуске я получаю «Приведение конструктора в тип« ExtendedDisplay.UserControls.Annotations », который соответствует указанным ограничениям привязки, создавал исключение». ошибка. Не знаю, почему. Вот мой код для базового класса,Получение исключения XamlParse при использовании userbaseclass с UserControl
общественного BaseClass абстрактного класса: UserControl { защищенных статический System.Type ControlType;
public static readonly RoutedEvent RefreshEvent = EventManager.RegisterRoutedEvent(
"RefreshEvent",
RoutingStrategy.Bubble,
typeof(RefreshEventHandler),
ControlType);
public delegate void RefreshEventHandler(object sender, RefreshEventArgs e);
public event RefreshEventHandler RefreshNeeded
{
add { AddHandler(RefreshEvent, value); }
remove { RemoveHandler(RefreshEvent, value); }
}
protected void RaiseRefreshEvent(RoutedEventArgs e)
{
RaiseEvent(new RefreshEventArgs(RefreshEvent, this));
e.Handled = true;
}
public class RefreshEventArgs : RoutedEventArgs
{
public RefreshEventArgs(RoutedEvent routedEvent, object source)
: base(routedEvent, source) { }
}
}
Этот код работает, как ожидалось, когда зашиты в UserControl. Любые идеи/помощь будут высоко оценены.
При дальнейших испытаниях кажется, что я не могу заменить последний параметр в функции EventManager.RegisterRoutedEvent переменной. У меня есть переменная "protected static System.Type ControlType;" который задается типом управления производным контролем. Это не работает при жестком кодировании. Чтобы заставить его работать, я не могу использовать переменную, даже если это правильный тип. Это вообще так?