2015-05-05 3 views
2

Я сейчас в (для меня довольно крутой) кривой обучения WPF и стилизации. Мне удалось создать большинство элементов управления, которые я использую в своем приложении, но теперь я нажимаю на стену: я хочу создать свою полосу прокрутки.WPF, изучая стиль scrollbar

Я прочитал кучу документации по этой теме

Так что пришло время на практике. Как я начал в своих предыдущих экспериментах, было просто установить стиль элемента управления, запустить приложение, посмотреть на ужасные творения, которые я создал, и перейти оттуда.

Хотя я не могу начать работу с полосой прокрутки.

Например, когда я добавляю следующий стиль в моем Styles.xaml (который правильно упоминается в моих Window.Resources, все остальные стили для кнопок, TextBlocks, и т.д., рамки группы прекрасно работают таким образом)

<Style TargetType="{x:Type Thumb}"> 
    <Setter Property="SnapsToDevicePixels" Value="True" /> 
    <Setter Property="OverridesDefaultStyle" Value="true" /> 
    <Setter Property="IsTabStop" Value="false" /> 
    <Setter Property="Focusable" Value="false" /> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="{x:Type Thumb}"> 
       <Border 
        CornerRadius="0" 
        Background="Chartreuse" 
        BorderBrush="Red" 
        BorderThickness="15" /> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

Это не отражается ни в коем случае, когда я запускаю свое приложение. Я попробовал несколько стилей (пример копирования вставки с TargetType Thumb, TargetType RepeatButton и т. Д.).

Нужно ли мне определение стиля scrollviewer + полосы прокрутки + кнопка повтора + большой палец, чтобы получить первый визуальный результат?

Я хотел бы начать с изменения Thumbs и самой полосы прокрутки, только внешний вид. Я не знаю, как начать, а затем скопировать/вставить 300 строк xaml из случайного блога, что приводит к тому, что я полностью потерялся ...

Надеюсь, какой-то волшебник в стиле WPF может указать мне в правильном направлении. Как сказано: желательно медленный шаг за шагом, чтобы я мог заставить себя поверить, что я понимаю, что я делаю :).

ответ

2

Итак, если мы взглянем на default style templates, вы увидите твердую ссылку;

Thumb Style="{StaticResource ScrollBarThumb}"

Таким образом, вы можете переопределить, что х: Key ресурса он использует в одном из нескольких способов, или вы можете стиль всего шаблона стиля, который включает в себя большой палец и включает его оттуда. Если вы хотите ссылку (хотя и для Silverlight), я могу отправить вам источник на одну из многих тем, которые я сделал пару лет назад, вы можете вникнуть, если хотите, так как на нем нет NDA, вы можете просмотреть вывод here. Который, как только вы знаете xaml, вам все равно, будет ли это SL, WPF, WP, независимо от того, что ....

Во всяком случае, для немедленного исправления для вас вы можете просто переопределить этот ресурс в экземпляре, что-то как (псевдо);

<ScrollViewer> 
    <ScrollViewer.Resources> 
    <Style x:Key="ScrollBarThumb" TargetType="{x:Type Thumb}"> 
    <Setter Property="SnapsToDevicePixels" Value="True" /> 
    <Setter Property="OverridesDefaultStyle" Value="true" /> 
    <Setter Property="IsTabStop" Value="false" /> 
    <Setter Property="Focusable" Value="false" /> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="{x:Type Thumb}"> 
       <Border 
        CornerRadius="0" 
        Background="Chartreuse" 
        BorderBrush="Red" 
        BorderThickness="15" /> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 
    </ScrollViewer.Resources> 
</ScrollViewer> 

Надеюсь, это поможет, приветствия.

+0

Привет, Крис, вы меня уже многому научили. Часть, которую я могу переопределить ключ «по умолчанию», так что она получает элемент управления по умолчанию, очень полезна! Скопируйте/вставьте исправление, пока ничего не видно. Но, наверное, это что-то глупое на моей стороне. Завтра утром я буду смотреть дальше! Большое спасибо до сих пор (примет ответ, когда я его заработаю, или я вернусь с дополнительными вопросами :)) – bas

+0

Не стоит беспокоить человека, мы все были там. Просто дай мне знать. Cheers –

+0

вы уверены, что ключом является ScrollBarThumb? Я просто посмотрел шаблон по умолчанию и только нашел ScrollBarThumbVertical и ScrollBarThumbHorizontal – Domysee

1

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

Вы можете посмотреть список старшинства здесь: https://msdn.microsoft.com/en-us/library/ms743230%28v=vs.110%29.aspx

Чтобы изменить стиль у вас есть два варианта:

Первый перезаписать ресурсы с ключом ScrollBarThumbVertical и ScrollBarThumbHorizontal.

Во-вторых, чтобы скопировать шаблон по умолчанию на свою собственную полосу прокрутки и отредактировать эти стили напрямую. Шаблон по умолчанию Scrollbar составляет около 250 строк кода, однако вы можете спокойно игнорировать все триггеры, на которые приходится около половины кода. Потребуется немного времени, чтобы найти вас вокруг, но я считаю, что это хороший опыт обучения.

Смежные вопросы