Получение исключения XamlParse при использовании пользовательского базового класса с UserControl - PullRequest
0 голосов
/ 21 октября 2010

У меня есть абстрактный базовый класс, который подклассов класса UserControl без XAML. Когда я создаю класс на основе базового класса, все работает нормально (компилируется и выполняется). Но когда я добавляю код в базовый класс для запуска события, он компилируется, но при запуске я получаю «вызов конструктора типа« ExtendedDisplay.UserControls.Annotations », который соответствует указанным ограничениям связывания, вызывает исключение. ошибка. Не уверен почему. Вот мой код для базового класса,

открытый абстрактный класс 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 на переменную. У меня есть переменная "защищенный статический System.Type ControlType;" это установлено в контроль typeof производным контролем. Это не работает, когда жестко запрограммирован. Чтобы заставить его работать, я не могу использовать переменную, хотя это правильный тип. Есть ли способ обойти это?

1 Ответ

0 голосов
/ 21 октября 2010

Хорошо, Наконец-то разобрался. Я сделал так, чтобы элемент базового класса "RefreshEvent" только что был объявлен в базовом классе и назначен в производном классе. Это прекрасно работает и делает то, что мне нужно, сохраняя основную часть шаблона в базовом классе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...