2010-10-21 33 views
0

我有一个抽象基类,该类没有XAML的子类UserControl类。当我创建一个基于基类的类时,一切正常(编译并执行)。但是当我向基类添加代码来触发一个事件时,它会编译,但是在运行时,我得到'类型为'ExtendedDisplay.UserControls.Annotations'的构造函数的调用与指定的绑定约束匹配,导致异常。错误。不知道为什么。 这里是我的代码基类,与UserControl一起使用userbaseclass时得到一个XamlParse异常

公共抽象类BaseClass:UserControl { {0}保护static 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) { } 
    } 

}

此代码的工作,当硬编码到用户控件预期。任何想法/帮助将不胜感激。

在进一步测试中,似乎我无法用变量替换EventManager.RegisterRoutedEvent函数中的最后一个参数。我有一个变量“受保护的静态System.Type ControlType;”通过派生控件将其设置为typeof控件。硬编码时这也不起作用。为了使它工作,我不能使用一个变量,即使它是正确的类型。有什么办法解决这个问题吗?

回答

0

好吧, 最后搞清楚了。我所做的就是让基类成员“RefreshEvent”在基类中声明并在派生类中分配。这很好,并且我需要在基类中保留大量的样板文件。

相关问题