在源自用户控件的自定义控件中设置DefaultStyleKey的ArgumentException - Silverlight 4

时间:2011-09-18 11:56:43

标签: silverlight silverlight-4.0

我创建了用户控件 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);

我错过了什么?

1 个答案:

答案 0 :(得分:2)

通过抛出UserControl明确禁止分配从DefaultStyleKey派生到ArgumentException的类型(为什么会出现ArgumentException以及为什么没有包含只有SL团队知道的解释性消息)。

UserControl无法模板化接收其自己的关联Xaml。这就是UserControl的重点。如果你希望以你正在尝试的方式继承它,你需要将MyUserControl转换为可模板控制。