我创建了用户控件 MyUserControl 。现在我想创建源自 MyUserControl 的自定义控件 MyCustomControl 。 MyCustomControl.cs代码如下:
public class MyCustomControl : MyUserControl
{
public MyCustomControl()
{
this.DefaultStyleKey = typeof(MyCustomControl);
}
}
我有样式
的Themes / Generic.xaml文件<Style TargetType="local:MyCustomControl">
...
</Style>
在运行时实例化 MyCustomControl 我得到 ArgumentException 执行该行
this.DefaultStyleKey = typeof(MyCustomControl);
我错过了什么?
答案 0 :(得分:2)
通过抛出UserControl
明确禁止分配从DefaultStyleKey
派生到ArgumentException
的类型(为什么会出现ArgumentException以及为什么没有包含只有SL团队知道的解释性消息)。
UserControl
无法模板化接收其自己的关联Xaml。这就是UserControl
的重点。如果你希望以你正在尝试的方式继承它,你需要将MyUserControl
转换为可模板控制。