Пользовательская панель прокрутки WPF / XAML ScrollBar без пользовательской панели прокрутки во внутренних элементах управления (например, TextBox) - PullRequest
2 голосов
/ 11 августа 2010

и спасибо, что заглянули в мой вопрос. Я хотел бы настроить ScrollBar в моем ScrollViewer. Нет проблем. Но ждать. Когда я это делаю, он также меняет полосу прокрутки внутренних элементов управления. Я не хочу влиять на эти полосы прокрутки. Как мне указать правильную область?

Вот XAML, который почти работает:

<Page
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
  <ScrollViewer>  
    <ScrollViewer.Resources>
      <Style TargetType="{x:Type ScrollBar}">
        <Setter Property="Background" Value="Red" />
      </Style>
    </ScrollViewer.Resources>
    <TextBox Height="200" Width="200" VerticalScrollBarVisibility="Visible" />
  </ScrollViewer>
</Page>

1 Ответ

2 голосов
/ 14 августа 2010

Поскольку ScrollViewer поддерживает только один дочерний объект, я добавил Grid для переноса текстового поля.В моем случае я применил стиль переопределения, чтобы сделать текстовое поле синим.Если вы удалите весь сеттер из таблицы, вы получите значение по умолчанию.

<Page 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> 
    <Grid>
        <ScrollViewer>
            <ScrollViewer.Resources>
                <Style TargetType="{x:Type ScrollBar}">
                    <Setter Property="Background" Value="Red" />
                </Style>
            </ScrollViewer.Resources>
            <Grid>
                <Grid.Resources>
                    <Style TargetType="{x:Type ScrollBar}">
                        <!-- remove setter to get default -->
                        <Setter Property="Background" Value="Blue" />
                    </Style>
                </Grid.Resources>
                <TextBox Height="200" Width="200" VerticalScrollBarVisibility="Visible" />
            </Grid>    
        </ScrollViewer>
    </Grid>
</Page> 
...