【发布时间】:2011-09-13 21:35:38
【问题描述】:
我将ComboBox 默认ControlTemplate(从Blend 复制)添加到UserControl 的ResourceDictionary,这样我就可以覆盖ComboBox ControlTemplate。当我添加 ControlTemplate 时,我必须添加以下 xml 命名空间:
xmlns:Microsoft_Windows_Themes="clr-namespace:Microsoft.Windows.Themes;assembly=PresentationFramework.Aero"
comboBox 默认模板中有三个对 PresentationFramework 主题中定义的对象的引用
<Microsoft_Windows_Themes:ButtonChrome ... >
<Microsoft_Windows_Themes:SystemDropShadowChrome ... >
<Microsoft_Windows_Themes:ListBoxChrome ... >
有没有办法删除这些类,但允许系统主题在运行时添加它们(就像通常那样)?所以我们不必在这个用户控件中有一个硬编码的主题。
编辑:我知道这些不是包装。然而,它们是指向主题的指针。如何在编译时仅使用占位符动态选择主题?
【问题讨论】:
-
如果您使用
ButtonChrome或SystemDropShadowChrome等作为您的自定义模板的一部分,会很困难。如果您删除 aero 参考甚至个别 chrome 类,您的模板代码将无法编译!DynamicResources和模板中提到的缺失类是完全不同的概念。
标签: wpf combobox controltemplate