我正在寻找扩展第三方控件,它是一个 ComboBox(所以它不是标准的 Silverlight 控件,但这对于这个问题应该没关系)。为此,我将一个新的模板控件添加到我的控件项目中,然后将新控件更改为从 ComboBox 继承而不是 Control。在 generic.xaml 文件中为我创建了一个样式,因此我删除了插入的默认边框内容,然后为 PopupTemplate 添加了一个属性设置器。
我的问题是,以这种方式执行此操作时,组合框不再(明显地)呈现在 silverlight 应用程序中。但是,如果我在我的扩展的构造函数中注释掉该行
this.DefaultStyleKey = typeof(MyComboBox);
并将 PopupTemplate xaml 位放在 silverlight 主页面中,它可以正确呈现。我希望在控件库中声明弹出模板,但这是否意味着我还必须定义常规 Template 属性?我认为我没有明确指定的任何东西都应该从基本控件继承,我错了吗?