Рестайлинг просто часть элемента управления wpf. Является ли это возможным? - PullRequest
2 голосов
/ 25 июня 2009

Я хочу изменить стиль только части элемента управления WPF.

(В частности, я хочу сделать кнопки прокрутки на полосе прокрутки больше)

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

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

  <Setter Property="Control.Template">
    <Setter.Value>
      <ControlTemplate TargetType="ScrollBar">
        <Grid Background="{TemplateBinding Panel.Background}" SnapsToDevicePixels="True">
          <Grid.ColumnDefinitions>
            <ColumnDefinition MaxWidth="{DynamicResource {x:Static SystemParameters.HorizontalScrollBarButtonWidthKey}}" />
            <ColumnDefinition Width="1E-05*" />
            <ColumnDefinition MaxWidth="{DynamicResource {x:Static SystemParameters.HorizontalScrollBarButtonWidthKey}}" />
          </... etc

Я просто хочу изменить MaxWidth в определениях столбцов на 50.

Итак, мой вопрос заключается в следующем: есть ли способ, как я могу сделать эту подстройку к шаблону без необходимости включать все остальное? Я все еще хочу, чтобы все остальные части шаблона элемента управления работали как по умолчанию.

1 Ответ

4 голосов
/ 25 июня 2009

В этом случае вы должны быть в состоянии, так как шаблон протягивает руку и получает значение из ресурса:

<ScrollBar xmlns:sys="clr-namespace:System;assembly=mscorlib">
    <ScrollBar.Resources>
        <sys:Double x:Key="{x:Static SystemParameters.HorizontalScrollBarButtonWidthKey}">50</sys:Double>
    </ScrollBar.Resources>
</ScrollBar>

Если бы в шаблоне было жестко задано значение, вам не повезло.

...