Как предоставить два стандартных шаблона для пользовательского элемента управления в WPF? - PullRequest
0 голосов
/ 20 января 2009

В статье Чарльза Петцольда «Использование шаблонов для настройки элементов управления WPF» в выпуске журнала MSDN за январь 2007 года (http://msdn.microsoft.com/en-us/magazine/cc163497.aspx), он говорит,

Элемент управления ProgressBar фактически имеет два шаблона по умолчанию для двух ориентаций. (Это также относится и к ScrollBar и Slider.) Если вы хотите, чтобы ваш новый ProgressBar поддерживал обе ориентации, вы должны написать два отдельных шаблона и выбрать их в разделе Triggers элемента Style, который вы также определяете для ProgressBar.

В настоящее время я пишу пользовательский элемент управления, который требует этой функциональности, но не может понять, как делать, как он говорит, - никоим образом не работает, во всяком случае. У кого-нибудь есть образец этого?

Заранее спасибо.

1 Ответ

2 голосов
/ 20 января 2009

Вы можете увидеть, как это делается в шаблоне элемента управления с полосой прокрутки http://msdn.microsoft.com/en-us/library/ms742173.aspx

Я скопировал только соответствующие части образца здесь.

Короче говоря, в словаре ресурсов есть два шаблона:

<ControlTemplate x:Key="VerticalScrollBar" TargetType="{x:Type ScrollBar}"> ...

<ControlTemplate x:Key="HorizontalScrollBar" TargetType="{x:Type ScrollBar}"> ...

И триггер в стиле для переключения между ними:

<Style x:Key="{x:Type ScrollBar}" TargetType="{x:Type ScrollBar}">
  <Style.Triggers>
    <Trigger Property="Orientation" Value="Horizontal">
      <Setter Property="Template" Value="{StaticResource HorizontalScrollBar}" />
    </Trigger>
    <Trigger Property="Orientation" Value="Vertical">
      <Setter Property="Template" Value="{StaticResource VerticalScrollBar}" />
    </Trigger>
  </Style.Triggers>
</Style>
...