Ссылка на шаблон управления базовыми типами в xaml - PullRequest
0 голосов
/ 07 декабря 2009

У меня есть элемент управления, полученный из ComboBox, я хочу использовать ComboBox ControlTemplate и просто установить для него несколько значений в xaml, а именно ItemContainerStyle. Приведенный ниже код не работает, последний установщик, который намеревается применить базовый шаблон управления ComboBox к этому, ничего не делает.

   <Style
      TargetType="{x:Type local:EditingFilteringComboBox}"
      BasedOn="{StaticResource {x:Type ComboBox}}">
      <Setter
         Property="IsEditable"
         Value="False" />
      <Setter
         Property="DisplayMemberPath"
         Value="DisplayValue" />
      <Setter
         Property="ItemContainerStyle"
         Value="{StaticResource editingFilteringComboBoxListBoxItem}" />
      <Setter
         Property="Template"
         Value="{StaticResource {x:Type ComboBox}}" />
   </Style>

Я хочу получить от ComboBox, но я не хочу включать для него весь шаблон управления. Я даже не хочу трогать шаблон управления. Я хочу изменить ItemContainerStyle, что я мог бы сделать из кода, но гораздо приятнее, если бы мне это не нужно.

Другая причина, по которой я хочу это здесь, заключается в том, что требуется доступ к внутренним членам шаблона управления ComboBox, а именно TextBox и Popup. Обычно я получаю доступ к таким членам в переопределении OnApplyTemplate.

Мне кажется, что я иду по неверному пути, просветите меня, сенсей.

1 Ответ

0 голосов
/ 07 декабря 2009

ложная тревога,

я не включил ссылку на этот файл в мой файл generic.xaml

о, и мне не нужно было устанавливать значение шаблона

   <Style
      TargetType="{x:Type local:EditingFilteringComboBox}"
      BasedOn="{StaticResource {x:Type ComboBox}}">
      <Setter
         Property="IsEditable"
         Value="False" />
      <Setter
         Property="DisplayMemberPath"
         Value="DisplayValue" />
      <Setter
         Property="ItemContainerStyle"
         Value="{StaticResource editingFilteringComboBoxListBoxItem}" />
   </Style>

стиль будет устанавливать только те свойства, которые отличаются от базового стиля. так как я не хочу менять шаблон управления, я просто не устанавливаю его. Вызывается OnApplyTemplate, и я могу получить доступ к внутренним элементам шаблона управления ComboBox.

...