Как переопределить только ItemTemplate в пользовательском элементе управления - PullRequest
0 голосов
/ 05 октября 2009

Я хочу создать пользовательский элемент управления, полученный из ComboBox, однако, если я создаю пользовательский элемент управления из шаблона Visual Studio, он создает элемент управления по умолчанию Style, и мне нужно открыть MSDN ControlTemplate из ComboBox и затем воссоздайте весь стиль ComboBox еще раз в generic.xaml

Что я хочу сделать, так это то, что я хочу создать пользовательский элемент управления, полученный из ComboBox, а в файле generic.xaml я хочу определить ItemTemplate, а не весь ControlTemplate.

Однако, если я буду придерживаться линии

static MyComboBox()
{
    DefaultStyleKeyProperty.
         OverrideMetadata(typeof(MyComboBox), 
         new FrameworkPropertyMetadata(
             typeof(MyComboBox)));
}

Тогда я вообще ничего не вижу, если я удаляю ControlTemplate из generic.xaml, однако, если я определяю ключ ItemTemplate в generic.xaml, как я должен инициализировать мой статический конструктор, чтобы поменять только ItemTemplate

Конечно, я могу изменить дизайн темы xaml из справки msdn, но разве нет простого способа сделать это?

1 Ответ

1 голос
/ 18 октября 2009

Недавно я написал свой собственный комбинированный список, который изменяет только шаблон элемента управления. Остальная часть стиля комбинированного списка наследуется из стандартного комбинированного списка.

В вашем конструкторе управления:

 static CustomComboBox()
 {
        DefaultStyleKeyProperty.OverrideMetadata(typeof(CustomComboBox)
                        , new FrameworkPropertyMetadata(typeof(CustomComboBox)));

 }

А потом в вашем generic.xaml:

<Style TargetType="{x:Type local:CustomComboBox}" BasedOn="{StaticResource {x:Type ComboBox}}">
    <Setter Property="ItemTemplate">
        <Setter.Value>
            <DataTemplate>
                **INSERT YOUR ITEM TEMPLATE HERE**
            </DataTemplate>
        </Setter.Value>
    </Setter>
</Style>

Ключевым моментом здесь является установка свойства BasedOn стиля для ссылки на стандартный элемент управления со списком.

Надеюсь, это поможет!

...