1

我正在寻找扩展第三方控件,它是一个 ComboBox(所以它不是标准的 Silverlight 控件,但这对于这个问题应该没关系)。为此,我将一个新的模板控件添加到我的控件项目中,然后将新控件更改为从 ComboBox 继承而不是 Control。在 generic.xaml 文件中为我创建了一个样式,因此我删除了插入的默认边框内容,然后为 PopupTemplate 添加了一个属性设置器。

我的问题是,以这种方式执行此操作时,组合框不再(明显地)呈现在 silverlight 应用程序中。但是,如果我在我的扩展的构造函数中注释掉该行

this.DefaultStyleKey = typeof(MyComboBox);

并将 PopupTemplate xaml 位放在 silverlight 主页面中,它可以正确呈现。我希望在控件库中声明弹出模板,但这是否意味着我还必须定义常规 Template 属性?我认为我没有明确指定的任何东西都应该从基本控件继承,我错了吗?

4

1 回答 1

1

一个控件只能有一种默认样式。您需要将基本控件的整个默认样式复制到新的 Generic.Xaml 中,MyComboBox然后相应地对其进行调整。

于 2009-11-24T23:37:44.403 回答