Я не думаю, что предложенный вами подход будет работать. Как только вы установите свойство Template
в стиле, вам также придется переопределить его визуальное представление. Однако вы можете определить скорректированный ControlTemplate
для TextBox
(как вы предлагали) в разделе Resources
ComboBox
(не в его шаблоне!).
<ComboBox ...>
<ComboBox.Resources>
<Style TargetType="{x:Type TextBox}">
<Setter Property="Template">
<ControlTemplate TargetType="{x:Type TextBox}">
<!-- define template for TextBox with an additional "clear" button -->
</ControlTemplate>
</Setter>
</Style>
</ComboBox.Resources>
</ComboBox>
Но тогда у вас все еще есть проблема как обработать нажатие на эту кнопку ...
A чистое решение относится к подклассу ComboBox
и предоставляет ICommand
, который очищает текущий выбор. Затем вы должны переопределить ComboBox
ControlTemplate
, добавить кнопку «очистить» помимо кнопки выпадающего меню и привязать эту кнопку к новой ICommand
. Это определенно довольно трудоемкая работа, но, в конце концов, у вас есть чистое решение, которое вы можете легко расширить позже.