Принимая решение о создании пользовательского элемента управления, вам необходимо определить, нужно ли вам добавить фактическое поведение или просто пользовательский интерфейс. Просто добавить кнопку можно, просто настроив шаблон ControlTemplate. Похоже, вам нужна кнопка, которая вызывает действие, которое обновит элементы ComboBox, которые будут указывать направление, в котором вы начали извлекать элемент управления из ComboBox. Вам нужно будет добавить несколько вещей в код и сторону XAML. В вашем стиле вам нужно добавить Setter для ControlTemplate и начать с копии шаблона по умолчанию для ComboBox (я обычно делаю это с Blend, но есть и другие источники). Затем вы можете добавить новую кнопку в шаблоне в любом месте.
<Style TargetType="{x:Type local:ComboBoxWithAdd}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type local:ComboBoxWithAdd}">
... copy of default template with your modifications
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
Существует несколько различных способов подключения кнопки, но наиболее надежным является использование команды, к которой вы можете привязать свой управляющий код. Вы можете объявить свою собственную RoutedCommand в вашем контрольном коде позже, но для начала просто используйте встроенный.
public ComboBoxWithAdd()
{
CommandBindings.Add(new CommandBinding(ApplicationCommands.New, NewExecutedMethod));
}
Затем в NewExecutedMethod просто добавьте любую логику, которую вы хотите выполнить для фактического действия по добавлению элемента (возможно, работая с ComboBox's Items / ItemsSource). Для подключения кнопки просто установите Command="ApplicationCommands.New"
. С помощью пользовательского элемента управления можно сделать гораздо больше, но это поможет вам начать работу.