与UserControl一起使用userbaseclass时得到一个XamlParse异常
问题描述:
我有一个抽象基类,该类没有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控件。硬编码时这也不起作用。为了使它工作,我不能使用一个变量,即使它是正确的类型。有什么办法解决这个问题吗?
答
好吧, 最后搞清楚了。我所做的就是让基类成员“RefreshEvent”在基类中声明并在派生类中分配。这很好,并且我需要在基类中保留大量的样板文件。