У меня есть требование изменить очень маленькую часть шаблона WPF ComboBox.
Если я возьму копию существующего шаблона для темы Luna и внесу изменения, все сначала будет работать нормально. Но если у пользователя другая тема, моя ComboBox
сохраняет свою собственную тему (которая, очевидно, основана на Luna), поэтому выглядит неуместно.
Есть ли способ переопределить только части шаблона, чтобы большая часть шаблона по-прежнему учитывала тему Windows?
Я заметил, что части шаблона определяют пространство имен mwt с явной ссылкой на Luna:
xmlns:mwt="...blah blah...=PresentationFramework.Luna"
возможно, есть какой-то способ, чтобы это пространство имен mwt ссылалось на текущую тему, а не конкретно на тему Luna?
Или я должен предоставить индивидуальную копию шаблона для каждой темы? И что произойдет, если MS создаст новую тему, придется ли мне затем обновлять мой шаблон для ее поддержки?
(Бит, который я изменяю, относится только к TextBlock
, отображаемому, когда поле со списком закрыто. Я не изменяю раскрывающийся список или кнопку. В идеале я бы просто переопределил SelectionBoxItemTemplate
на ComboBox
но это только для чтения, поэтому, насколько я могу судить, я должен переопределить весь шаблон элемента управления, чтобы внести какие-либо изменения.)
[Соответствующий вопрос, но нет ответов: Настроить шаблон управления и при этом соблюдать тему ОС? ]