我将来自Blend的ComboBox
默认ControlTemplate
添加到了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
等控件,那么使用 Luks 就会变得困难。如果您删除了 Aero 引用或者单独的 Chrome 类,您的模板代码将无法编译!DynamicResources
和模板中引用的缺失类是完全不同的概念。 - WPF-it